尽管文件存在,但无法打开共享的 libasound 库

B. *_*oux 7 sound shared-library pulseaudio games

在尝试重温我的童年并在 Linux 上再次玩 Sid Meier 的 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
Run Code Online (Sandbox Code Playgroud)

我在 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
Run Code Online (Sandbox Code Playgroud)

没有 中的兼容库Loki_Compat,游戏根本无法运行。我已经尝试添加libasound_module_conf_pulse.soLD_LIBRARY_PATH以及的完整路径LD_PRELOAD,我已经尝试重新安装游戏和相关的库,我什至尝试将困难的库进行符号链接Loki_Compat以确保它被找到,但无济于事。

尽管我已经通过Google看到了Cannot open shared library ...对此类错误的各种提及(主要是在不同的程序中),但到目前为止我还没有找到令人满意的解决方案。我很想把这归结为一个无法解决的问题(因为从现在到我上次玩游戏时之间发生了一些问题),除了奇迹般地,当我重新安装游戏时,声音是开箱即用的周末。

小智 5

我在 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
Run Code Online (Sandbox Code Playgroud)