![PulseAudio 无法打开共享库](https://linux22.com/image/22568/PulseAudio%20%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80%E5%85%B1%E4%BA%AB%E5%BA%93.png)
我在 Intel Core i7 机器上运行 Debian wheezy (x86) 和 GNOME。我在使 PulseAudio 正常工作时遇到问题。由于 GNOME 3 自动安装 PulseAudio,我几乎一直坚持使用它。
从控制台运行 ALSA 混音器时,我收到以下错误消息:
ALSA lib conf.c:3314:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so
ALSA lib control.c:951:(snd_ctl_open_noupdate) Invalid CTL default
cannot open mixer: No such file or directory
共享库实际上确实存在(/usr/lib/i386-linux-gnu/alsa-lib/libasound_module_conf_pulse.so)。我对这个问题进行了广泛的谷歌搜索,但没有找到真正有效的解决方案。其中一项建议是将文件放置在另一个位置,但这没有什么区别。
此外,许多实际尝试使用 PulseAudio 的程序无法启动。我看到的另一个错误消息是:
mybox:/# pulseaudio
pulseaudio: symbol lookup error: /usr/lib/i386-linux-gnu/libsndfile.so.1: undefined symbol: vorbis_version_string
ALSA 工作得很好,但实际上我必须先卸载 PulseAudio,然后才能使用混音器设置音量,然后才能重新安装它。然后,一些我可以强制使用 ALSA 的软件(如 XBMC)就可以工作了。
该系统包含板载 Intel 音频和 nVidia HDMI 声音驱动程序。我现在最感兴趣的是 HDMI 声音(如果这很重要的话):
mybox:/# aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
default:CARD=Intel
HDA Intel, ALC887 Analog
Default Audio Device
sysdefault:CARD=Intel
HDA Intel, ALC887 Analog
Default Audio Device
front:CARD=Intel,DEV=0
HDA Intel, ALC887 Analog
Front speakers
surround40:CARD=Intel,DEV=0
HDA Intel, ALC887 Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=Intel,DEV=0
HDA Intel, ALC887 Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Intel,DEV=0
HDA Intel, ALC887 Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Intel,DEV=0
HDA Intel, ALC887 Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Intel,DEV=0
HDA Intel, ALC887 Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Intel,DEV=0
HDA Intel, ALC887 Digital
IEC958 (S/PDIF) Digital Audio Output
hdmi:CARD=NVidia,DEV=0
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=1
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=2
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=3
HDA NVidia, HDMI 0
HDMI Audio Output
我现在完全不知道我的系统出了什么问题。我什至还没有搞乱任何设置,但为了确定起见,我尝试清除所有配置并重新安装。
对我来说,这些错误消息看起来像是软件包已损坏,但这种情况已经持续了数周,同时发布了几个新的软件包版本。有人知道出了什么问题吗?
编辑:
Jan Marek 要求提供一些额外信息:
mybox:~# ldconfig -v | grep libasound
ldconfig: Can't stat /lib/i486-linux-gnu: No such file or directory
ldconfig: Can't stat /usr/lib/i486-linux-gnu: No such file or directory
ldconfig: Path `/lib/i386-linux-gnu' given more than once
ldconfig: Path `/usr/lib/i386-linux-gnu' given more than once
libasound.so.2 -> libasound.so.2.0.0
即使搜索了路径 /usr/lib/i386-linux-gnu`,它似乎libasound_module_conf_pulse.so
也没有列出。显然不止一次?我不确定为什么会这样,以下是相关配置:
## /etc/ld.so.conf:
/usr/X11R6/lib
include /etc/ld.so.conf.d/*.conf
## /etc/ld.so.conf.d/i486-linux-gnu.conf:
# Multiarch support
/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu
/lib/i486-linux-gnu
/usr/lib/i486-linux-gnu
## /etc/ld.so.conf.d/libc.conf
# libc default configuration
/usr/local/lib
至于 strace,我不完全确定它想告诉我什么。
11655 open("/usr/lib/i386-linux-gnu/alsa-lib/libasound_module_conf_pulse.so", O_RDONLY) = 3
11655 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\7\0\0004\0\0\0"..., 512) = 512
11655 fstat64(3, {st_mode=S_IFREG|0644, st_size=4168, ...}) = 0
11655 mmap2(NULL, 7028, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7785000
11655 mmap2(0xb7786000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb7786000
11655 close(3) = 0
我认为这意味着打开文件成功,它读取了 512 字节,然后决定关闭文件?
我已添加/usr/lib/i386-linux-gnu/alsa-lib
到 ld.so.conf,这会更改启动 alsamixer 时的行为。通过该行,我得到了分段错误。在启动过程中,我也经常遇到一堆这样的脉冲音频错误,所以我回家后会尝试重新启动(service alsasound restart
没有效果)
答案1
1)当你尝试ldconfig -v
:会在这个列表libasound_module_conf_pulse.so
库中吗?
2)您可以尝试使用命令strace -f -F -o alsamixer.strace alsamixer
,然后浏览文件alsamixer.strace
并尝试从下到上查找,为什么它无法打开带库的文件。
答案2
Realtek ALC887(HDA Intel)在 Wheezy 中?
我找到了这个:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=679056
在这里的最后:
http://forums.debian.net/viewtopic.php?f=7&t=59680
祝你好运。
答案3
如果您在 64 位系统上运行 32 位应用程序,则可能需要安装 32 位版本:
sudo dpkg --add-architecture i386
sudo apt-get install libasound2-plugins:i386
答案4
首先创建错误中给出的被调用环境:
就我而言:
ALSA lib conf.c:3725:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so (/lib/i386-linux-gnu/alsa-lib/libasound_module_conf_pulse*.so: cannot open shared object file: No such file or directory)
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default
要解决此问题,请运行以下命令:
sudo mkdir /usr/lib/i386-linux-gnu/alsa-lib/
cd /usr/lib/i386-linux-gnu/alsa-lib/
sudo dpkg --add-architecture i386
sudo apt-get install libasound2-plugins:i386