我下载了游戏帕卡蓬对于 Linux 并尝试运行可执行文件,结果出现错误:
$ ./runner
./runner: error while loading shared libraries: libopenal.so.1:
cannot open shared object file: No such file or directory
显然,有加载的必要libopenal.so.1
:
$ objdump -p ./runner |grep libopenal.so.1
NEEDED libopenal.so.1
我可以这样libopenal.so.1
做/usr/lib/x86_64-linux-gnu
:
$ ldd libopenal.so.1
linux-vdso.so.1 => (0x00007fffcdbbb000)
...
我不会以 root 身份运行该可执行文件 (./runner)(以防万一该问题可能与权限不足有关,但我没有假设)。
那么,我还能尝试什么呢?
答案1
出现错误是因为这是 32 位游戏,而您尝试在 64 位 Linux 中运行。我通过谷歌搜索错误消息来找出我缺少哪些软件包,从而解决了错误。我最终安装了以下软件包来运行游戏:
sudo apt-get install libxxf86vm1:i386 libglu1-mesa:i386 libopenal1:i386 libssl1.0.0:i386
答案2
将来,在 ./runner 上运行 ldd 将会告诉您它所需的库、是否缺失以及它们是 i386 还是 64 位。
$ ldd 在 ./runner 上
/undertale/game$ ldd ./runner
linux-gate.so.1 (0xf7798000)
libgtk3-nocsd.so.0 => /usr/lib/i386-linux-gnu/libgtk3-nocsd.so.0 (0xf7759000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf75d3000)
...
libXrandr.so.2 => 未找到
libbsd.so.0 => /lib/i386-linux-gnu/libbsd.so.0 (0xf6b41000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf6b3d000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf6b36000)
注意,我仍缺少适用于 i386 的 xrandr。因此,这还无法工作。
$./runner
./runner:加载共享库时出错:>libXrandr.so.2:无法打开共享对象文件:没有此文件或目录
答案3
使用apt-file
工具查找哪个包提供了所需的库。如果你没有搜索工具,请先安装它
sudo apt-get install apt-file
如果这是你第一次使用apt-file
工具,则必须先更新缓存
apt-file update # it may require root privileges. If so just use sudo
现在搜索图书馆:
apt-file search libXrandr.so.2
libxrandr2: /usr/lib/x86_64-linux-gnu/libXrandr.so.2
libxrandr2: /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
现在安装你需要的 32 位软件包
sudo apt-get install libxrandr2:i386