Me he enfrentado exactamente este mismo problema al remasterizar un sistema tinycore64 de 32 bits que ejecuta un kernel de 64 bits.
Después de mucha búsqueda, he descubierto por qué estos comentarios tendrían sentido para ambos. .
"Eso estaría bien, pero - por lo menos en mi entorno - no parecen funcionar El cargador se quejó, sino que no se limitó a saltar las bibliotecas que no coinciden con el bit-dad. ¡Tristemente!" - struppi
"Esto es muy extraño, ¿podrías describir cómo fallaron las cosas? Además, ¿quizás publique la salida de ldd?" - Adam Goode
Y por qué este comentario puede parecer cierto, pero en realidad es incorrecto.
El vinculador ignorará las bibliotecas que no puede leer.
Este enlace arroja algo de luz sobre él. http://www.markusbe.com/2009/09/about-running-32-bit-programs-on-64-bit-ubuntu-and-shared-libraries/
Y más al punto, usted encontrará la página de ld.so esclarecedora.
Resulta que el nombre de ruta puede hacer una diferencia en lo que el enlazador en tiempo de ejecución ld.so elige como la biblioteca que cargará. En mi sistema Linux de 64 bits, tengo una gama de nombres de directorio extraños además de los estándar. p.ej./lib/x86_64-linux-gnu. De hecho, pensé que experimentaría moviendo las bibliotecas en esa ruta a/lib64. Cuando lo hice, ¿adivinen qué pasó? de repente mi aplicación de 64 bits (brctl en este caso) no funcionó y se quejó con "clase ELF incorrecta". Hola ... ahora estamos en algo.
Ahora no estoy 100% seguro pero la clave parece estar relacionada con la expansión del token rpath. Sospecho que la expansión de $ {PLATAFORMA} puede tener algo que ver con eso. Y el nombre x86_64 debe ser parte de eso.
En cualquier caso, cuando puse mis librerías de 64 bits en las vías de acceso de biblioteca denominadas x86_64-linux-gnu como apposed a solo lib64, se prefirieron a las de 32 bits y funcionó.
En su caso, es probable que desee hacer algo muy similar para las bibliotecas de 32 bits en 64. Pruebe i386-linux-gnu.
Así que en mi caso que voy a instalar las bibliotecas de 64 bits compartida en un espacio de usuario de 32 bits, he creado las siguientes rutas:
mkdir /lib/x86_64-linux-gnu/
mkdir /usr/lib/x86_64-linux-gnu/
ln -s /lib/x86_64-linux-gnu /lib64
ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
añadir sus bibliotecas de 64 bits a las trayectorias de 64 bits y bibliotecas de 32 bits a la de 32 bits/lib &/usr/lib paths only.
A continuación, agregue las rutas específicas de 64 bits a ld.so.conf y actualice su caché con ldconfig Ahora sus aplicaciones de 32 bits & de 64 bits se ejecutarán sin problemas.
¿qué estás utilizando para mantener tu construcción? makefiles? –
Sí, Makefiles. – struppi