.png)
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.a
Datei 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 i386
und 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:i386
ich das Paket deinstallieren muss build-essential
.
Natürlich muss ich am Ende auch meine ändern und makefile
hinzufügen (und andere Zeilen?). Ich kann meine posten, wenn das erforderlich ist, damit du mir helfen kannst. ^^-m32
CXXFLAGS
makefile
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.