Kompilieren meines 32-Bit-Programmcodes auf 64-Bit-Ubuntu (Suche nach einem sicheren Pfad)

Kompilieren meines 32-Bit-Programmcodes auf 64-Bit-Ubuntu (Suche nach einem sicheren Pfad)

Ich habe zum ersten Mal ein 64-Bit-Ubuntu auf meinem Laptop installiert. Jetzt suche ich nach einer Möglichkeit, mein altes Biologie-C++-Projekt auf diesem Betriebssystem zu kompilieren. Ich habe eine .sh-Datei, die alle notwendigen Pakete installiert, damit mein Projekt auf einem neu installierten 32-Bit-Ubuntu kompiliert werden kann. Der Inhalt dieser Datei ist der folgende:

#!/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

Das Problem ist nun, dass ich, nachdem ich diese Pakete auf meinem 64-Bit-Ubuntu installiert habe und mein Projekt mit dem entsprechenden Makefile kompilieren möchte, die folgende Fehlermeldung erhalte:

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

Nach der Überprüfung weiß ich nun, dass die libgll.aDatei für die Architektur kompiliert wurde elf33-i386. Da ich nicht weiß, wie ich diese Datei für die 64-Bit-Architektur neu kompilieren kann, bin ich ziemlich sicher, dass ich mein gesamtes Projekt in der 32-Bit-Architektur kompilieren muss.

Kurz gesagt, meine Frage lautet jetzt: Wie kann ich dieses Projekt als 32-Bit-Anwendung kompilieren und auf 64-Bit-Ubuntu ausführen?

Ich würde vermuten, dass ich den Befehl verwenden dpkg --add-architecture i386und dann die gewünschten Pakete manuell mit installieren muss apt-get install <package-name>:i386. Das Problem bei dieser Methode ist, dass apt-get install libsdl1.2-dev:i386ich das Paket deinstallieren muss build-essential.

Natürlich muss ich am Ende auch meine ändern und makefilehinzufügen (und andere Zeilen?). Ich kann meine posten, wenn das erforderlich ist, damit du mir helfen kannst. ^^-m32CXXFLAGSmakefile

Als Erstes habe ich versucht, einfach alles so zu installieren, wie auf meinem vorherigen 32-Bit-Rechner.

Das Problem ist, dass ich den folgenden Kompilierungsfehler erhalte: /usr/bin/ld: Überspringen der inkompatiblen Datei ../../gllib-3.0b3/lib/libgll.a beim Suchen nach -lgll

Dies brachte mich auf den Gedanken, dass mein (5 Jahre altes) System wahrscheinlich einfach nicht mit der 64-Bit-Anwendung kompatibel war.

Oder weißt du zufällig, ob ich das als natives 64-Bit kompilieren kann? ^^

Antwort1

Es ist sehr merkwürdig, dass das Programm, das Sie kompilieren möchten, eine 32-Bit-Binärbibliothek anstelle des Quellcodes enthält, aber anscheinend kann diese Bibliothek gefunden werdenHier, und wenn Sie das kompilieren, sollten Sie eine 64-Bit-Libgll erhalten, mit der Sie dieses Programm für 64 Bit kompilieren können.

verwandte Informationen