Cómo habilitar la compatibilidad binaria de 32 bits en Linux Mint 11 x64

8

Recientemente instalé x64 Linux Mint 11, básicamente Ubuntu Natty. Desde la instalación, descubrí que mi sistema Mint 11 rechaza las aplicaciones de 32 bits que solían ejecutarse en mi sistema Ubuntu. Cuando uso la utilidad 'archivo' para verificar el binario, lo identifica correctamente como un elfo de 32 bits, pero no puedo invocar la aplicación.

He intentado iniciarlo desde bash y os.system a la python, sin éxito, por lo que sospecho que debe tener algo que ver con el modo de compatibilidad binaria de 32 bits, pero conozco ese subsistema y cómo habilitarlo. es limitado, ¿alguien puede ayudar?

Gracias

Gearoid Murphy
fuente
+1 gracias por preguntar. ¡También cambié de natty a Mint también!
Alain Pannetier

Respuestas:

5

Instale ia32-libs y asegúrese de que el archivo de la aplicación esté marcado como ejecutable, ¡eso debería hacer el trabajo! :)

Edición tardía:

La lib podría posiblemente llamarse ia32-libs-multiarch en lugar de ia32-libs.
apt-get install ia32-libs-multiarch

Ruairi Fullam
fuente
Excelente, eso funcionó perfectamente, ¡gracias !. Sin embargo, ¿estoy un poco inseguro de por qué funcionó ?, incluso si me faltaban las bibliotecas antes, ldd habría enumerado al menos los archivos de objetos compartidos requeridos. Antes de instalar ia32-libs, ldd simplemente diría que el binario no era un ejecutable vinculado dinámicamente, ¿hay alguna otra salsa secreta que ia32-libs usa para ejecutar aplicaciones de 32 bits?
Gearoid Murphy
No estoy seguro de ser honesto, ¡pero es lo que funcionó para mí! :) (ps ¡Marca la respuesta si te gusta!). :)
Ruairi Fullam
Interesante, eliminé ia32-libs y el ejecutable aún funcionaba (está estáticamente vinculado), después de un examen más detallado de la salida de 'lsmod', puedo ver que hay un módulo llamado "binfmt_misc", esto es a lo que me refería, yo Estoy bastante seguro de que ese es el requisito principal para admitir formatos binarios alternativos, como 32 bits o COFF exe de Windows.
Gearoid Murphy
2

No sé nada sobre MINT, pero tengo algo de experiencia con Debian: para ejecutar binarios de 32 bits, necesita en casi cualquier caso las bibliotecas que admiten binarios de 32 bits en un entorno de 64 bits. Tratar

apt-get install ia32-libs

Si hay apt-get en su sistema ... (o intente aptitude o lo que venga con MINT)

Puede verificar qué bibliotecas se necesitan con ldd :

lofi:~# ldd /bin/ping
linux-vdso.so.1 =>  (0x00007ffff7dff000)
libc.so.6 => /lib/libc.so.6 (0x00007fd872ed1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd87323c000)

Si faltan bibliotecas, ldd te lo dirá.

trurl
fuente
Cuando usé ldd en el binario de 32 bits antes de instalar ia32-libs, me devolvió un error que decía que el binario no era un ejecutable vinculado dinámicamente, sé que hay un módulo de kernel construido para manejar diferentes formatos ejecutables y había anticipado que esto era lo que necesitaba configurarse para habilitar la compatibilidad binaria de 32 bits.
Gearoid Murphy