[Linux] Auf x86_64 für i386 kompilieren

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

[Linux] Auf x86_64 für i386 kompilieren

Beitrag von nouseforname » Mo Feb 21, 2011 10:43 pm

Hatte gerade das Problem dass ich auf Ubuntu 64b arbeite aber für i386 kompilieren will.

Folgendes muss dazu nachinstalliert werden

Code: Alles auswählen

sudo apt-get install ia32-libs

Code: Alles auswählen

sudo apt-get install libc6-dev-i386
und g++ bekommt noch -m32 als Parameter mit.

Nun habe ich aber noch das Problem dass zb ncurses trotzdessen dass es installiert ist nicht gefunden wird.
Vielleicht weisst aber jemand was ich dazu linken muss.

zB sowas wie -l /usr/lib32/ncurses.so.5 oder so.

Hab schon bissel rumprobiert aber es noch nicht geschafft.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [Linux] Auf x86_64 für i386 kompilieren

Beitrag von Xin » Di Feb 22, 2011 12:28 am

Wie rufst Du denn denn den Compiler auf?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: [Linux] Auf x86_64 für i386 kompilieren

Beitrag von nouseforname » Di Feb 22, 2011 6:32 am

so...

Code: Alles auswählen

g++ -m32 -lm -lncurses -Wall -ansi -pedantic -g -o ....
es fehlt definitiv der pfad zu den 32er libs, ohne -m32 geht alles.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [Linux] Auf x86_64 für i386 kompilieren

Beitrag von Xin » Di Feb 22, 2011 10:17 am

nouseforname hat geschrieben:es fehlt definitiv der pfad zu den 32er libs, ohne -m32 geht alles.
Die ncurses liegt auch als 32 Bit Version vor?

Ich habe vor ein paar Jahren auf Linux für Windows kompiliert, da waren entsprechend auch Windows andere Libs erforderlich.
Ich gucke mal, ob ich das Makefile noch finde.

Was ich mit Sicherheit noch weiß, ist dass es einen mingw-xyz-gcc gab, der sämtliche Konfiguration übernimmt.

Wenn ich das richtig sehe, fehlt Dir aber zuerst wirklich die Angabe, dass er sich nicht auf /usr/lib verlassen darf.
Das müsste sich erstmal so beheben lassen.

Code: Alles auswählen

g++ -m32 -L/usr/lib32 -lm -lncurses -Wall -ansi -pedantic -g -o ....
Dann schauen wir, was als nächstes kommt. ^^

Das Thema ist interessant, das sollten wir in die FAQ geben.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: [Linux] Auf x86_64 für i386 kompilieren

Beitrag von Dirty Oerti » Di Feb 22, 2011 1:39 pm

Die ncurses liegt auch als 32 Bit Version vor?
Das ist meistens das Hauptproblem.
Ich würde empfehlen die entsprechenden Bibliotheken als 32bit Version (das Paket z.B., halt nicht über die Paketverwaltung, da geht das glaub ich ja gar nicht) runterzuladen und z.B. nach /opt/lib32/ oder sonst wo hin zu packen.

Das Thema ist interessant, das sollten wir in die FAQ geben.
Auf jeden Fall. Cross-Compilierung nach Windows hab ich auch was hier, was funktioniert :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: [Linux] Auf x86_64 für i386 kompilieren

Beitrag von nouseforname » Di Feb 22, 2011 6:37 pm

Würde gerne meinen ersten Beitrag noch editieren um den Post zu vervollständigen.

nun gut, schreibe ich eben alles hier. Zu meinem Problem... mir fehlte nur noch lib32ncurses5-dev und der Symlink, alles andere war vorhanden.
Den Pfad als Flag mitzugeben hat nicht funktioniert.

So gehts....

Folgendes ist zu installieren:

Code: Alles auswählen

sudo apt-get install ia32-libs libc6-i386 libc6-dev-i386 lib32gcc1 lib32stdc++6 lib32ncurses5 lib32ncurses5-dev
Damit die -lstdc++ auch gefunden wird nun noch den Symlink erstellen:

Code: Alles auswählen

sudo ln -s /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so
und dann so kombilieren:

Code: Alles auswählen

g++ -m32 -lncurses -o x.y source.cpp
Bei mir ist so zumindest alles OK, auf den ersten Blick.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [Linux] Auf x86_64 für i386 kompilieren

Beitrag von Xin » Di Feb 22, 2011 7:17 pm

nouseforname hat geschrieben:Würde gerne meinen ersten Beitrag noch editieren um den Post zu vervollständigen.
Was fehlt denn?
nouseforname hat geschrieben: nun gut, schreibe ich eben alles hier. Zu meinem Problem... mir fehlte nur noch lib32ncurses5-dev und der Symlink, alles andere war vorhanden.
Den Pfad als Flag mitzugeben hat nicht funktioniert.
Schade ^^
Aber geschadet hat es nicht? Ich gehe dann mal davon aus, dass -m32 den Library-Pfad ebenfalls setzt?!
nouseforname hat geschrieben:So gehts....
...
Bei mir ist so zumindest alles OK, auf den ersten Blick.
Okay, dann werde ich den Thread mal auf die Todo-Liste setzen oder magst Du ihn das hier als FAQ-Seite setzen?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: [Linux] Auf x86_64 für i386 kompilieren

Beitrag von nouseforname » Di Feb 22, 2011 8:14 pm

Xin hat geschrieben: Was fehlt denn?
Ich hätte einfach alles gleich in den ertsne Post geschrieben, so muss man nicht lange suchen.
Schade ^^
Aber geschadet hat es nicht? Ich gehe dann mal davon aus, dass -m32 den Library-Pfad ebenfalls setzt?!
Geschadet hat es nicht, aber gebracht auch nichts, hatte ich so oder ähnlich ja auch selbst schon versucht. Fehlermeldung war die gleiche.
Zumindet bringt -m32 ganz andere Meldungen wenn die lib32 garnicht vorhanden ist, kann also gut sein dass dies dann automatisch gesetzt wird.
Wie gesagt, bei mir hat wegen -lncurses noch die libncurses5-dev gefehlt, und wegen -ldstd++ der Symlink.
Okay, dann werde ich den Thread mal auf die Todo-Liste setzen oder magst Du ihn das hier als FAQ-Seite setzen?
Ist ja nicht viel, kann es gerne mal versuchen.

Antworten