Fazendo meu código de programa de 32 bits compilar no Ubuntu de 64 bits (procurando por caminho seguro)

0

Eu instalei pela primeira vez um Ubuntu de 64 bits no meu laptop. Agora estou procurando uma maneira de compilar meu antigo projeto de biologia C ++ neste sistema operacional. Eu tenho um arquivo .sh que instala todos os pacotes necessários para o meu projeto para compilar 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

Após ter verificado, agora sei que o arquivo libgll.a foi compilado para a arquitetura elf33-i386 . Como não sei como recompilar esse arquivo para a arquitetura de 64 bits, tenho certeza de que preciso compilar todo o meu projeto na arquitetura de 32 bits.

Para encurtar a história, minha pergunta agora é: Como posso fazer este projeto compilar como um aplicativo de 32 bits e executá-lo no Ubuntu de 64 bits?

Meu palpite seria que eu tenho que usar o comando dpkg --add-architecture i386 e, em seguida, instalar manualmente os pacotes de interesse com apt-get install <package-name>:i386 . Problema com esse método é que apt-get install libsdl1.2-dev:i386 requer que eu desinstale o pacote build-essential .

É claro que finalmente terei que modificar meu makefile , adicionando -m32 a CXXFLAGS (e outras linhas?). Eu posso postar meu makefile se isso for necessário para você me ajudar. ^^

O que eu tentei pela primeira vez foi simplesmente instalar tudo do jeito que eu tinha na minha máquina anterior de 32 bits.

O problema é que recebo o seguinte erro de compilação: / usr / bin / ld: ignorando ../../gllib-3.0b3/lib/libgll.a ao procurar por -lgll

Isso me fez pensar que provavelmente meu (5 anos) 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? ^^

    
por Mandel Brot 16.04.2016 / 00:22

1 resposta

1

É muito estranho que qualquer programa que você esteja tentando compilar contenha uma biblioteca binária de 32 bits ao invés de seu código fonte, mas aparentemente esta biblioteca pode ser encontrada aqui , e se você compilar você deve pegar uma libgll de 64 bits que você pode usar para compilar este programa para 64 bits.

    
por psusi 16.04.2016 / 21:25