Hacer que el código de mi programa de 32 bits se compile en Ubuntu de 64 bits (buscando una ruta segura)

Hacer que el código de mi programa de 32 bits se compile en Ubuntu de 64 bits (buscando una ruta segura)

Por primera vez instalé Ubuntu de 64 bits en mi computadora portátil. Ahora estoy buscando una manera de compilar mi antiguo proyecto de biología C++ en este sistema operativo. Tengo un archivo .sh que instala todos los paquetes necesarios para que mi proyecto se compile en un Ubuntu de 32 bits recién instalado. El contenido de este archivo es el siguiente:

#!/bin/sh
apt-get update  # To get the latest package lists
apt-get install build-essential -y
apt-get install freeglut3-dev -y
apt-get install libsdl1.2-dev -y
apt-get install libsdl-image1.2-dev -y
apt-get install libsdl-mixer1.2-dev -y
apt-get install libopenscenegraph-dev -y

Ahora el problema es que, después de haber instalado esos paquetes en mi Ubuntu de 64 bits y querer compilar mi proyecto con el Makefile correspondiente, aparece el siguiente mensaje de error:

/usr/bin/ld: skipping incompatible ../../gllib-3.0b3/lib/libgll.a when searching for -lgll
/usr/bin/ld: cannot find -lgll

Después de haberlo comprobado, ahora sé que el libgll.aarchivo fue compilado para elf33-i386arquitectura. Como no sé cómo recompilar este archivo para una arquitectura de 64 bits, estoy bastante seguro de que tengo que compilar todo mi proyecto en una arquitectura de 32 bits.

En pocas palabras, mi pregunta ahora es: ¿Cómo puedo hacer que este proyecto se compile como una aplicación de 32 bits y ejecutarlo en Ubuntu de 64 bits?

Supongo que tengo que usar el comando dpkg --add-architecture i386y luego instalar manualmente los paquetes de interés con apt-get install <package-name>:i386. El problema con ese método es que apt-get install libsdl1.2-dev:i386requiere que desinstale el build-essentialpaquete.

Por supuesto, finalmente también tendré que modificar mi makefile, agregando -m32( CXXFLAGS¿y otras líneas?). Puedo publicar mi makefilesi es necesario para que me ayudes. ^^

Lo primero que intenté fue simplemente instalar todo como lo tenía en mi máquina anterior de 32 bits.

El problema es que aparece el siguiente error de compilación: /usr/bin/ld: omitiendo ../../gllib-3.0b3/lib/libgll.a incompatible al buscar -lgll

Esto me hizo pensar que probablemente mi hijo (de 5 años) simplemente no era compatible para ejecutarse como una aplicación de 64 bits.

¿O sabría si debería poder compilar esto como 64 bits nativo? ^^

Respuesta1

Es muy extraño que cualquier programa que intentes compilar incluya una biblioteca binaria de 32 bits en lugar de su código fuente, pero aparentemente esta biblioteca se puede encontrar.aquí, y si compila eso, debería obtener una libgll de 64 bits que debería poder usar para compilar este programa para 64 bits.

información relacionada