[Pandora] Cross Compiler / Compiler usw. ????


relei

Well-Known Member
Staff member
Joined
Dec 27, 2006
Messages
1,205
Hi Leute,

ich mach mich bestimmt lächerlich, aber ich habe immer ein paar Probleme wenn ich etwas für die Pandora übersetzen oder Programmieren möchte.

Ich kann zwar Programmieren es fällt mir aber immer schwer cross compiler einzurichten oder IDEs zu installieren und so richtig kann ich auch keine gute Anleitung für die Pandora finden.

Für mein Verständnis gibt es zwei Arten von Programmierer die einen die was am Betriebssystem machen möchten, oder ein paar libs für die Pandora übersetzen möchten und die zweite Gruppe die eigene Anwendungen/Spiele programmieren möchte.

Gruppe 1:

Braucht wahrscheinlich eine komplette Entwicklungsumgebung z.B. in Qemu.

Gruppe 2:

Braucht den Compiler und ein paar ARM Libs und z.B. eine IDE wie Codeblocks

Ist das soweit richtig???

Wenn ja beginne ich mal mit der Gruppe 1.

Wie installiere ich mir so eine Entwicklungsumgebung oder gibt es ein Image was ich in einer Art VirtualBox(oder eben QEMU) starten kann. Gibt es für einen wie mich eine schöne Beschreibung wie man sich eine solche Umgebung erzeugt?

Wie funktioniert eigentlich QEMU und wie Emuliere ich ein ARM-System?

Vielen Dank und schönen Gruß
Rene
 
Also ich denke das einfachste wäre das Image da auf eine SD zu installieren, davon zu booten, sich am Hauptpc per ssh auf der Pandora einzuloggen und dann gleich auf der Pandora zu kompilieren.

Das ist das was ich vorhabe zu machen sobald ich eine funktionierende Netzwerkverbindung auf der Pandora habe (habe gerade den ganzen Tag bis jetzt darauf verschwendet zu versuchen eine Verbindung über USB einzurichten, kein Erfolg, da bleibt mir wohl nichts anderes als ein LAN->USB Adapter übrig) und meine 8GB SD Karte ankommt von der ich booten will, damit gcc usw. Platz haben.

Dann gibt's noch das, um am einfachsten zu Crosscompilen (schau vor allem die Scripts in "sdk_utils" an).

Eine komplette virtuelle Maschine habe ich noch nicht eingerichtet, wäre auch interessiert.
 
Was du so unter einfach verstehst, T4b...

Ich weiß nicht, was du nutzt, relei, aber für Linux gibt es verschiedene, gleichwertige Toolchains, die per Script oder Copy&Paste einfach kopiert werden. Und zwar die Version, um Userlandprogramme zu schreiben.

Sicher, dass du das andere überhaupt brauchst?
 
Ziz said:
Was du so unter einfach verstehst, T4b...
Ich finde das einfach und vor allem auch nachher praktisch im Gebrauch.
Und es ist das, was ich noch am ehesten verstehe. :-D
 
Hi,

ich möchte nicht auf der Pandora übersetzen das dauert mir einfach zu lange, bei kleinen Anwendungen geht das super aber wenn ich z.B. versuche Codeblocks zu übersetzen dauert das zu lange.

Für den Zaurus gab es damals eine life CD auf der, der Cross Compiler schon installiert war und man bequem übersetzen konnte.

Aber mal zu den Sachen die ich gerne machen würde:

Kernel anpassen und neu übersetzen -----> reicht glaube ich ein ARM Compiler... oder????
Eigene Programme/Spiele schreiben ------> reicht glaube ich auch der ARM Compiler und ein paar libs wie SDL... oder???
Bestehende Programme für die Pandora über setzen z.B. Codeblocks -----> Da brauche ich den Cross Compiler mit kompletten umgebungs Libs usw.... oder (der Link von weiter oben sieht da aber schon ganz gut aus)???

Am liebsten hätte ich so eine Art Entwicklungs-Image was ich mit qemu/VirtualBox starten kann und bei bedarf ganz einfach zurücksetzen kann (z.B. für tests)

Schönen Gruß
Rene
 
Dem schliesse ich mich an, sowas in einer VM hätte ich auch gerne... Habe selbst versucht den Crosscompiler unter Ubuntu zum laufen zu bekommen, bin aber leider gescheitert :(
 
Dicker182 said:
Dem schliesse ich mich an, sowas in einer VM hätte ich auch gerne... Habe selbst versucht den Crosscompiler unter Ubuntu zum laufen zu bekommen, bin aber leider gescheitert :(
Bei mir war das eine Sache von Script starten und warten. Komisch, dass es bei dir nicht geht. :O

Heute ist meine 8GB SD Karte angekommen.
Habe dann gleich den automatischen OS-auf-SD-Installer in Kombination mit dem Image verwendet um Angström auf die SD zu installieren (512MB Swap hab ich damit auch gleich noch gemacht).
Dann habe ich das in den Root der SD entpackt.
Als nächstes von der SD gebootet, und mal testweise flashbench "portiert", beziehungsweise "make" eingegeben und das war's dann (kompilieren dauerte so 5s, aber ist ja auch nichts grosses).

Also: Ja, Ziz, tatsächlich extrem einfach.

-- Mi Apr 27, 2011 23:00 --

http://www.gp32x.com/board/index.php?/topic/59123-pandoraangstrom-running-in-qemu-incomplete-wip/
 
In vielen Fällen wird wohl eine fertige Cross-Compilier-Toolchain tatsächlich ausreichen. Für die anderen Fälle wollte ich einfach mal zwei Sachen in den Raum werfen:

1) Statt einer VM finde ich in den meisten Fällen eine einfache chroot-Umgebung angenehmer. Dazu sagt man dem Kernel vom Host-System zuerst, dass der ARM-Binaries direkt ausführen soll (qemu eignet sich dafür - das ist dann keine VM, nur CPU-Emulation für die Binaries) und verwendet anschließend chroot um in die Buildumgebung zu wechseln. Man spart sich aber die ganze VM und kann auch sehr einfach Dateien zwischen Host-System und der Build-Umgebung austauschen.

2) Für die in 1) genannte Variante und für die VM-Variante kann ich distcc sehr empfehlen. Dadurch lässt sich der Compiliervorgang erheblich beschleunigen, da so ein nativer ARM-gcc, der per Emulation auf x86 (oder was auch immer) ausgeführt wird, nicht grade der schnellste ist. Mit distcc kann dem nativen Compiler dann ein Cross-Compiler unter die Arme greifen. (Mehrere sind natürlich auch möglich.) Für den distcc-Compiler braucht man keinerlei Libraries/Header-Files etc. zu installieren, so dass alle Vorteile, die sich durch eine chroot-Umgebung oder VM ergeben, bestehen bleiben. Das einzige, worauf man hier achten muss ist, dass die gcc-Versionen vom nativen ARM-gcc und dem Cross-ARM-gcc für distcc identisch sind.
 
Es sollte eigentlich reichen, wenn man sich mit debootstrap ein ARM-System aufbaut und das dann mit qemu startet.

Zum Crosscompilen kann man dann das aufgebaute System als Linker-Suchpfad nutzen.
 
Hier geht es darum Programme für die Pandora zu kompilieren, ja?

Ich hab immer noch DJWillis Toolchain, die soll wohl nicht mehr ideal sein, aber für mich funktioniert sie: http://blogs.distant-earth.com/wp/?p=109

Bei CodeBlocks dann einfach bei "Compiler und Debugger" eine Kopie des GCC - ARM erstellen, diese Pandora nennen und die Toolchain executables und Pfäde setzen. Fertig.

EDIT: ...und eine VM oder so hab ich noch nie gebraucht. Von Performanceproblemen abgesehen lief alles was unter Ubuntu lief auch so auf der Pandora. Gut, mit OGL hab ich noch nicht gespielt....
 
Für Programme und Spiele die nicht zu "low-level" gehen würde ich heutzutage Ivanovic's SDK empfehlen, das ist einfacher zu installieren und zu benutzen als die Toolchain von DJWillis und beinhaltet ALLE libs die es auch auf der Pandora gibt (keine mehr, keine weniger) - ist also ein super Komplettpaket:
http://www.gp32x.com/board/index.php?/topic/58443-crosscompiler-toolchain-based-on-openpandora-org-ipks/
Das benutze ich aktuell und ist nachdem ich lange mit dem Bausatz von DJWillis gearbeitet habe einfach nur eine Wohltat ;)

Falls es an Kernel-Entwicklung oder Ähnliches gehen soll, nimm besser die von sebt3, die basiert größtenteils auf der von DJWillis, ist aber etwas ausgemistet, aufgeräumt und insgesamt weniger zusammengehackt:
http://www.gp32x.com/board/index.php?/topic/58490-yactfeau/

Beide Threads enthalten auch Informationen wie man mit den SDKs dann letztendlich compiliert (mit make, cmake, etc.).
Wenn du Code::Blocks benutzen willst musst im Endeffekt da auch "nur" in den Einstellungen einen neuen Compiler erstellen und die Pfade zu gcc.exe, etc. anpassen (bei Problemen kannst du mich gerne fragen, hab das jetzt auf Ubuntu und Windows fertig eingerichtet).

foxblock out
 
Hi,

danke für eure Antworten, ich habe jetzt mal die Ivanovic's SDK installiert. Aber wie benutze ich diese, wenn ich z.B. ein bestehendes Programm übersetzen möchte. Ich würde erwarten das ich ein Script starte was mir alle Pfade setzt und ich dann ganz normal ./configure und danach make eintippen kann.

Oder liege ich da ganz falsch???

Vielen Dank
Rene

PS: Warum kann ich mit der Ivanovic's SDK kein Kernel übersetzen???
 
wenn du dir noch ein Script anlegst, das gewisse Umgebungsvariablen für den Linker vorbereitet, ja
 
Wir müsste den so ein Script aussehen und welche Pfade müsste man ändern.

Vielen Dank
Rene
 
relei said:
Wir müsste den so ein Script aussehen und welche Pfade müsste man ändern.

Vielen Dank
Rene

es müsste im Prinzip die Ziel-Architektur des GCC umstellen und dem LD ein Verzeichnis zu den zu linkenden Libraries geben.

Wie das im Detail geht, find's heraus ;)
 
relei said:
danke für eure Antworten, ich habe jetzt mal die Ivanovic's SDK installiert. Aber wie benutze ich diese, wenn ich z.B. ein bestehendes Programm übersetzen möchte. Ich würde erwarten das ich ein Script starte was mir alle Pfade setzt und ich dann ganz normal ./configure und danach make eintippen kann.
Schau einfach mal in den unterordner sdk_utils/. Da ist nen "wrapper" für configure drin. Da drin stehen die "Umgebungsvariablen", die configure sonst nutzen würde. Du kannst auch einfach diesen wrapper von dort aufrufen, wo du sonst ./configure nutzen würdest, dann wird configure mit entsprechenden Umgebungsvariabeln aufgerufen. Zusätzlich werden alle Parameter, die du an configure übergeben würdest auch vom wrapper an configure durchgereicht. Das ganze sollte dann ungefähr so funktionieren:
Code:
$PNDSDK/../sdk_utils/pandora_configure.sh --enable-foo
Natürlich funktioniert das ganze nur bei "autotools" basiertem configure. Pseudo configure Skripte wie beim mplayer oder ffmpeg gehen damit *nicht*! Danach musst du dann noch make aufrufen und er sollte kompilieren...
 
Hi,

danke für die Hilfe... habe zwar alles installiert (ging echt ohne Probleme... echt super ivanovic und vielen Dank :-D ), bin aber noch nicht zum testen gekommen, melde mich wenn ich ein wenig getestet habe.

Vielen Dank
Rene
 
Back
Top