.png)
Instalei pela primeira vez um Ubuntu de 64 bits no meu laptop. Agora estou procurando uma maneira de compilar meu antigo projeto C++ de biologia neste sistema operacional. Eu tenho um arquivo .sh que instala todos os pacotes necessários para que meu projeto seja compilado em um Ubuntu de 32 bits recém-instalado. O conteúdo deste arquivo é o seguinte:
#!/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
Agora o problema é que, depois de instalar esses pacotes no meu Ubuntu de 64 bits e querer compilar meu projeto com o Makefile correspondente, recebo a seguinte mensagem de erro:
/usr/bin/ld: skipping incompatible ../../gllib-3.0b3/lib/libgll.a when searching for -lgll
/usr/bin/ld: cannot find -lgll
Depois de verificar, agora sei que o libgll.a
arquivo foi compilado para elf33-i386
arquitetura. Como não sei como recompilar este arquivo para arquitetura de 64 bits, tenho quase certeza de que terei que compilar todo o meu projeto na arquitetura de 32 bits.
Resumindo, minha pergunta agora é: como posso compilar este projeto como um aplicativo de 32 bits e executá-lo no Ubuntu de 64 bits?
Meu palpite é que preciso usar o comando dpkg --add-architecture i386
e instalar manualmente os pacotes de interesse com apt-get install <package-name>:i386
. O problema com esse método é que isso apt-get install libsdl1.2-dev:i386
exige que eu desinstale o build-essential
pacote.
Claro que finalmente também terei que modificar meu makefile
, adicionando -m32
( CXXFLAGS
e outras linhas?). Posso postar o meu makefile
se isso for necessário para que você me ajude. ^^
O que tentei primeiro foi simplesmente instalar tudo do jeito que fiz na minha máquina anterior de 32 bits.
O problema é que recebo o seguinte erro de compilação: /usr/bin/ld: ignorando incompatível ../../gllib-3.0b3/lib/libgll.a ao procurar por -lgll
Isso me fez pensar que provavelmente meu (5 anos) simplesmente não era compatível para rodar como um aplicativo de 64 bits.
Ou você saberia se eu deveria ser capaz de compilar isso como nativo de 64 bits? ^^
Responder1
É muito estranho que qualquer programa que você esteja tentando compilar inclua uma biblioteca binária de 32 bits em vez de seu código-fonte, mas aparentemente esta biblioteca pode ser encontradaaqui, e se você compilar, deverá obter uma libgll de 64 bits que poderá usar para compilar este programa para 64 bits.