ldconfig encontra uma biblioteca, o ldd ainda não

2

EDIT : Encontrei a resposta - o binário é de 32 bits, eu estava instalando bibliotecas de 64 bits. Instalando como sudo apt-get install libsdl1.2debian:i386 funciona.

Estou tentando fazer com que o Dwarf Fortress funcione no Ubuntu 14.04. Ele vem como um binário vinculado dinamicamente com algumas dependências que ainda não tenho.

Por isso, corro 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

Vamos pelo primeiro. apt-file search me informa que libSDL-1.2.so.0 é fornecido por 'libsdl1.2debian', então eu instalo isso.

Com certeza:

$ 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

E esse diretório é mencionado em /etc/ld.so.conf.d/x86_64-linux-gnu.conf .

ldconfig também funciona, pelo menos, para além de algumas mensagens de aviso (desculpe pelos holandeses):

$ 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

Os erros "meerdere malen opgegeven" significam que o caminho ocorre várias vezes em /etc/ld.so.conf.d/, parece OK para mim.

A última linha diz que o arquivo correto foi encontrado. Infelizmente, ldd ainda fornece exatamente a mesma saída acima .

Há um passo que está faltando? Preciso recarregar alguma coisa? Tanto quanto eu posso ver, ldconfig funciona corretamente, mas ldd ainda não encontra o arquivo, e eu pensei que seria.

    
por RemcoGerlich 25.06.2014 / 23:10

1 resposta

4

O problema era que o Dwarf_Fortress era um binário de 32 bits (descobri com file Dwarf_Fortress ) e as bibliotecas que eu estava instalando eram de 64 bits. Adicionar :i386 no final do comando apt-get instala as versões i386 das bibliotecas e isso funciona.

    
por RemcoGerlich 25.06.2014 / 23:23