64bit
在 Debian Wheezy 64 位中執行 32 位應用程序:缺少庫
我想在 Debian Wheezy 64 位中玩 Aquaria 遊戲。安裝正常,但是在嘗試玩遊戲時出現以下錯誤:
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 hw:0 AL lib: alsa.c:1000: control open (0): No such file or directory Message: SDL_GL_LoadLibrary Error: Failed loading libGL.so.1
我添加了 32 位兼容性,
dpkg --add-architecture i386
並且我認為系統中存在所需的庫,因為鍵入會locate libasound_module_conf_pulse.so
產生:/usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_conf_pulse.so
和
locate libGL.so.1
:/etc/alternatives/glx--libGL.so.1-x86_64-linux-gnu /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1 /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1.2 /usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1 /usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1.2 /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/fglrx/fglrx-libGL.so.1.2 /usr/lib/x86_64-linux-gnu/fglrx/libGL.so.1
但是,Debian 似乎忽略了它們。我可以做什麼來玩水族館?
編輯 1:ldd 水族館
linux-gate.so.1 => (0xf77e1000) libSDL-1.2.so.0 => /opt/Aquaria/./libSDL-1.2.so.0 (0xf7748000) libopenal.so.1 => /opt/Aquaria/./libopenal.so.1 (0xf76fa000) libstdc++.so.6 => /opt/Aquaria/./libstdc++.so.6 (0xf760d000) libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf75c3000) libgcc_s.so.1 => /opt/Aquaria/./libgcc_s.so.1 (0xf75b8000) libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf7455000) libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf7451000) libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf7437000) librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xf742e000) /lib/ld-linux.so.2 (0xf77e2000)
看來您缺少 32 位庫(
/usr/lib/x86_64-linux-gnu
包含 64 位庫)。現在,讓我們確定您的庫需要哪些包:$ dpkg -S /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_conf_pulse.so libasound2-plugins:amd64: /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_conf_pulse.so $ dpkg -S /usr/lib/x86_64-linux-gnu/libGL.so.1 libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/libGL.so.1
所以你需要這些包的 32 位版本:
# apt-get install libasound2-plugins:i386 libgl1-mesa-glx:i386
通常,在安裝任何 32 位庫之前,必須將
i386
體系結構添加到dpkg
:# dpkg --add-architecture i386 # apt-get update
更新
由於上述內容並沒有解決libGL.so.1
問題,而且從您的ldd
輸出看來,Aquaria 可以看到其所有必需的庫,因此我搜尋了libGL.so.1
錯誤消息並出現了兩件事。請按順序嘗試以下 2 個解決方案:
- 正如這裡解釋的嘗試符號連結
libGL.so.1
:ln -sv /usr/lib/i386-linux-gnu/libGL.so.1.2 /usr/lib/libGL.so.1
請注意,我修改了連結到的答案中的路徑,以便它們與 Debian 相關。 2. 這裡的答案表明您需要安裝
libgl1-mesa-glx:i386
(您已經完成)加上libgl1-mesa-dri:i386
(這是我建議您接下來嘗試的)。更新:終於奏效了
apt-get purge libgl1-mesa-glx:i386 apt-get install libgl1-mesa-glx:i386 ln -s /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1 /usr/lib/i386-linux-gnu/