
Meus linkers estão em
/lib{32,64}/ld-2.20.so
, com links simbólicos em
/lib32/ld-linux.so.2
e
/lib64/ld-linux-x86-64.so.2
(para os apropriados ld-2.20.so
)
Quando tento executar um binário de 32 bits, está tudo bem. Eles compilam bem (estou usando um specs
arquivo gcc ligeiramente modificado) e aparentemente vinculam bem e funcionam bem.
Quando tento ldd /path/to/example/32bit/binary
, me dizem not a dynamic executable
. Meu entendimento é que isso se deve à impossibilidade de encontrar um vinculador para abrir o executável.
readelf -l example_binary | grep interpreter
dá [Requesting program interpreter: /lib32/ld-linux.so.2]
, como esperado.
Alguma idéia de por que isso está acontecendo/como posso consertar isso?
Ps - "Instalar bibliotecas de compatibilidade de 32 bits usando sudo apt get ..." não é útil, pois não possui apt/pacman/etc. Se eu precisar reinstalar uma biblioteca específica (32 bits), saber disso seria útil!
Pps - Os arquivos de script instalados pelo grupo gcc
at os arquivos /usr/lib{32,64}/libc.so
apropriados (reais) , com o final para lib32libc.so.6
libc_nonshared.a
AS_NEEDED ( /lib32/ld-linux.so.2 ) )
Responder1
Acontece que isso é muito fácil.
/usr/bin/ldd
é apenas um arquivo de script.
Abrir o arquivo de script mostra uma linha próxima ao topo, que inicialmente diz (no meu sistema):
RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-x32.so.2"
.
Alterar esta linha para
RTLDLIST="/lib32/ld-linux.so.2 /lib64/..."
resolver imediatamente o problema.
Ps (adicionando aqui caso ajude alguém com dificuldades para instalar o gobject-introspection) A solução também é útil se você estiver tentando instalar o gobject-introspection, porque isso chama ldd
para resolver bibliotecas.
A mensagem de erro que recebi foi:ERROR: can't resolve libraries to shared libraries: gobject-2.0, glib-2.0