背景:Windows10 pro上hyper-v自带的ubuntu 18.04 LTS。
在使用虚拟机时发现没有声音,通过这篇博客Linux xrdp远程桌面连接声音重定向来到 pulseaudio-module-xrdp的README。
按照说明来到最后几步:
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git
cd pulseaudio-module-xrdp
./bootstrap && ./configure PULSE_DIR=/path/to/pulseaudio-11.1
make
出现问题。
问题1:No package 'libpulse' found
解决方法:
sudo apt install libpulse-dev
问题2:module-xrdp-sink.c:26:10: fatal error: config.h: 没有那个文件或目录
问题描述:
make all-recursive
make[1]: 进入目录“/home/hetang/pulseaudio-11.1/pulseaudio-module-xrdp”
Making all in src
make[2]: 进入目录“/home/hetang/pulseaudio-11.1/pulseaudio-module-xrdp/src”
CC module_xrdp_sink_la-module-xrdp-sink.lo
module-xrdp-sink.c:26:10: fatal error: config.h: 没有那个文件或目录
#include
^~~~~~~~~~
compilation terminated.
Makefile:472: recipe for target 'module_xrdp_sink_la-module-xrdp-sink.lo' failed
make[2]: *** [module_xrdp_sink_la-module-xrdp-sink.lo] Error 1
make[2]: 离开目录“/home/hetang/pulseaudio-11.1/pulseaudio-module-xrdp/src”
Makefile:418: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: 离开目录“/home/hetang/pulseaudio-11.1/pulseaudio-module-xrdp”
Makefile:350: recipe for target 'all' failed
make: *** [all] Error 2
解决方法:查看module-xrdp-sink.c源码,搜索config.h,发现注释给出config.h的位置在pulseaudio-11.1的目录下。于是跳转到前面pulseaudio-11.1目录,使用
sudo cp config.h ~/pulseaudio-11.1/pulseaudio-module-xrdp/src/config.h
问题3:module-xrdp-sink.c:52:10: fatal error: pulsecore/core-error.h: 没有那个文件或目录
问题描述:
make all-recursive
make[1]: 进入目录“/home/hetang/pulseaudio-11.1/pulseaudio-module-xrdp”
Making all in src
make[2]: 进入目录“/home/hetang/pulseaudio-11.1/pulseaudio-module-xrdp/src”
CC module_xrdp_sink_la-module-xrdp-sink.lo
module-xrdp-sink.c:52:10: fatal error: pulsecore/core-error.h: 没有那个文件或目录
#include
^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:472: recipe for target 'module_xrdp_sink_la-module-xrdp-sink.lo' failed
make[2]: *** [module_xrdp_sink_la-module-xrdp-sink.lo] Error 1
make[2]: 离开目录“/home/hetang/pulseaudio-11.1/pulseaudio-module-xrdp/src”
Makefile:418: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: 离开目录“/home/hetang/pulseaudio-11.1/pulseaudio-module-xrdp”
Makefile:350: recipe for target 'all' failed
make: *** [all] Error 2
解决方法:使用
sudo find / -name core-error.h
发现该文件位置在/pulseaudio-11.1/src/pulsecore/,由于对于linux命令不熟悉,索性
sudo nautilus
打开文件管理器,把整个pulsecore目录复制到~/pulseaudio-11.1/pulseaudio-module-xrdp/src/
再次make,不再报错。
最后来到Install环节,按照README说明,使用
make install
命令安装。使用
ls $(pkg-config --variable=modlibexecdir libpulse)
命令,检查是否有一大堆module-*.so文件和module-xrdp-sink.so
, module-xrdp-source.so
文件,如果有则安装成功。
README最后一段提到在开启xrdp的session打开pavumeter这个程序,安装即可:
sudo apt install pavumeter
但遗憾的是,实体机并未发出声音。