PulseAudio 无法打开共享库

PulseAudio 无法打开共享库

我在 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

相关内容