
Mis enlazadores están en
/lib{32,64}/ld-2.20.so
, con enlaces simbólicos en
/lib32/ld-linux.so.2
y
/lib64/ld-linux-x86-64.so.2
(a los apropiados ld-2.20.so
)
Cuando intento ejecutar un binario de 32 bits, todo está bien. Se compilan bien (estoy usando un specs
archivo gcc ligeramente modificado) y aparentemente se vinculan bien y funcionan bien.
Cuando lo intento ldd /path/to/example/32bit/binary
, me dicen not a dynamic executable
. Tengo entendido que esto se debe a que no puedo encontrar un vinculador para abrir el ejecutable.
readelf -l example_binary | grep interpreter
da [Requesting program interpreter: /lib32/ld-linux.so.2]
, como se esperaba.
¿Alguna idea de por qué sucede esto o cómo puedo solucionarlo?
Ps: "Instalar bibliotecas de compatibilidad de 32 bits usando Sudo apt get ..." no es útil, ya que no tengo apt/pacman/etc. Si necesito reinstalar una biblioteca específica (32 bits), saberlo sería útil.
Pps: los archivos de script instalados por gcc
at agrupan los archivos /usr/lib{32,64}/libc.so
apropiados (reales) , con el final para lib32libc.so.6
libc_nonshared.a
AS_NEEDED ( /lib32/ld-linux.so.2 ) )
Respuesta1
Resulta que esto es bastante fácil.
/usr/bin/ldd
es solo un archivo de script.
Al abrir el archivo de secuencia de comandos se muestra una línea cerca de la parte superior, que inicialmente dice (en mi sistema):
RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-x32.so.2"
.
Cambiar esta línea para
RTLDLIST="/lib32/ld-linux.so.2 /lib64/..."
solucionar el problema de inmediato.
Ps (agregando aquí en caso de que ayude a alguien más que tiene dificultades para instalar gobject-introspection) La solución también es útil si intenta instalar gobject-introspection, porque eso requiere ldd
resolver bibliotecas.
El mensaje de error que recibí fue:ERROR: can't resolve libraries to shared libraries: gobject-2.0, glib-2.0