ldd com binários de 32 bits em sistema de 64 bits - é executado, mas não reporta

ldd com binários de 32 bits em sistema de 64 bits - é executado, mas não reporta

Meus linkers estão em

/lib{32,64}/ld-2.20.so, com links simbólicos em

/lib32/ld-linux.so.2e

/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 specsarquivo 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[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 gccat os arquivos /usr/lib{32,64}/libc.soapropriados (reais) , com o final para lib32libc.so.6libc_nonshared.aAS_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 lddpara resolver bibliotecas.

A mensagem de erro que recebi foi:ERROR: can't resolve libraries to shared libraries: gobject-2.0, glib-2.0

informação relacionada