ldconfig находит библиотеку, ldd все еще не делает

РЕДАКТИРОВАТЬ : нашел ответ - двоичный файл является 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 все еще не находит файл, и я думал, что это будет.

2
задан 26 June 2014 в 01:22

1 ответ

Проблема состояла в том, что Dwarf_Fortress был 32-разрядным двоичным файлом (я узнал с file Dwarf_Fortress), и библиотеки, которые я устанавливал, были 64-разрядными. Добавление :i386 в конце способного - добирается, команда устанавливает i386 версии библиотек, и это работает.

4
ответ дан 26 June 2014 в 01:22

Другие вопросы по тегам:

Похожие вопросы: