当我试图重温童年时光并在 Linux 上再次玩席德·梅尔的半人马座 Alpha Centauri 时(几年前我成功做到了这一点),我遇到了一个顽固的错误。Loki 端口安装正常,使用提供的库和加载脚本玩游戏时没有崩溃或视觉问题,但没有声音。从命令行加载时,游戏会抛出以下错误:
ALSA lib conf.c:3314:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
我使用的是 Mint 17 (Ubuntu 14.04),因此运行 PulseAudio 来获取声音。我想知道的是 1) 此错误的根源是什么以及 2) 如何修复它?
最奇怪的是,就在 24 小时前,游戏还运行正常和声音;仅当我重新启动系统时,游戏声音才会停止工作(其他应用程序的声音工作正常),我无法在安装过程中或安装后重现可能导致这种情况的任何步骤。
我安装了 osspd、32 位 libasound2 库和 64 位 libasound2 库,并且libasound_module_conf_pulse.so
做/usr/lib/i386-linux-gnu/alsa-lib
确实在和下都存在/usr/lib/x_86_64-linux-gnu/alsa-lib
。我用来加载游戏以及声音工作的脚本如下:
#!/bin/bash
export LD_LIBRARY_PATH=/opt/AlphaCentauri/Loki_Compat
$LD_LIBRARY_PATH/ld-linux.so.2 /opt/AlphaCentauri/smacx.dynamic
如果没有 中的兼容库Loki_Compat
,游戏根本无法运行。我尝试将 的完整路径添加到libasound_module_conf_pulse.so
以及LD_LIBRARY_PATH
,LD_PRELOAD
尝试重新安装游戏和相关库,甚至尝试对 中的困难库进行符号链接Loki_Compat
以确保可以找到它,但都无济于事。
虽然我见过多次提及Cannot open shared library ...
此类错误(主要是在不同的程序中)通过Google,到目前为止我还没有找到令人满意的解决方案。我本想把这个问题归结为一个无法解决的问题(因为从现在到我上次玩游戏时出现了问题),但上周末我安装游戏时,声音奇迹般地开箱即用。
答案1
我在 Ubuntu 14.04 64bit 上遇到了类似的问题(也许,它发生在我手动安装了特定版本的alsa-base
包之后,因为当我尝试在该主机上从源代码构建 Java Hotspot 和 JVM 时它在某种程度上是必需的)。
我还检查了“strace”输出,发现只安装了一个符号链接/usr/lib/x86_64-linux-gnu/libasound_module_conf_pulse.so
,解决了我的问题。可能是你把符号链接安装在了错误的位置。我的具体命令是:
cd /usr/lib/x86_64-linux-gnu/
sudo ln -s alsa-lib/libasound_module_conf_pulse.so libasound_module_conf_pulse.so
答案2
libasound_module_conf_pulse.so
我在使用 pygame.midi 时也遇到了问题
sudo apt install --reinstall alsa-utils alsa-tools
解决了这个问题。希望它能帮到别人。我正在使用 Debian Buster。
答案3
首先创建Error中给出的调用环境:
就我而言: ALSA lib conf.c:3725:(snd_config_hooks_call) 无法打开共享库 libasound_module_conf_pulse.so (/lib/i386-linux-gnu/alsa-lib/libasound_module_conf_pulse*.so: 无法打开共享对象文件:没有此文件或目录) ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) 未知的 PCM 默认值
运行以下命令:
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