编辑:找到答案了——二进制文件是 32 位的,我正在安装 64 位库。安装sudo apt-get install libsdl1.2debian:i386
过程正常。
我正在尝试让 Dwarf Fortress 在 Ubuntu 14.04 下运行。它以动态链接二进制文件的形式提供,其中包含一些我尚未拥有的依赖项。
所以我运行ldd
它:
$ ldd libs/Dwarf_Fortress
linux-gate.so.1 => (0xf76e3000)
libSDL-1.2.so.0 => not found
libgraphics.so => /home/remco/src/df_linux/libs/libgraphics.so (0xf72af000)
libstdc++.so.6 => /home/remco/src/df_linux/libs/libstdc++.so.6 (0xf71d1000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf718b000)
libgcc_s.so.1 => /home/remco/src/df_linux/libs/libgcc_s.so.1 (0xf7170000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf6fc1000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf6fa5000)
/lib/ld-linux.so.2 (0xf76e4000)
libgtk-x11-2.0.so.0 => not found
libgobject-2.0.so.0 => not found
libSDL-1.2.so.0 => not found
libSDL_image-1.2.so.0 => not found
libGLU.so.1 => not found
libSDL_ttf-2.0.so.0 => not found
我们先来看一下。apt-file search
它告诉我它libSDL-1.2.so.0
是由“libsdl1.2debian”提供的,所以我安装了它。
果然:
$ ls -l /usr/lib/x86_64-linux-gnu/libSDL*
lrwxrwxrwx 1 root root 20 mei 10 06:40 /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0 -> libSDL-1.2.so.0.11.4
-rw-r--r-- 1 root root 427600 mei 10 06:40 /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0.11.4
并且这个目录在中被提及/etc/ld.so.conf.d/x86_64-linux-gnu.conf
。
ldconfig
也可以工作,至少除了一些警告信息(对不起荷兰人):
$ sudo ldconfig -v | grep libSDL
/sbin/ldconfig.real: Kan status van /lib/i686-linux-gnu niet opvragen: Bestand of map bestaat niet
/sbin/ldconfig.real: Kan status van /usr/lib/i686-linux-gnu niet opvragen: Bestand of map bestaat niet
/sbin/ldconfig.real: Pad '/lib/x86_64-linux-gnu' is meerdere malen opgegeven
/sbin/ldconfig.real: Pad '/usr/lib/x86_64-linux-gnu' is meerdere malen opgegeven
/sbin/ldconfig.real: /lib/i386-linux-gnu/ld-2.19.so is the dynamic linker, ignoring
/sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-2.19.so is the dynamic linker, ignoring
libSDL-1.2.so.0 -> libSDL-1.2.so.0.11.4
“meerdere malen opgegeven”错误意味着该路径在 /etc/ld.so.conf.d/ 中出现多次,对我来说似乎没问题。
最后一行告诉我已找到正确的文件。不幸的是,ldd
仍然给出与上面完全相同的输出。
我是不是漏掉了什么步骤?我需要重新加载某些东西吗?据我所知,它ldconfig
工作正常,但ldd
仍然找不到文件,而我以为它会找到。
答案1
问题是 Dwarf_Fortress 是 32 位二进制文件(我用 发现的file Dwarf_Fortress
),而我安装的库是 64 位的。:i386
在 apt-get 命令末尾添加会安装库的 i386 版本,这样就可以了。