Archiv verlassen und diese Seite im Standarddesign anzeigen : mit chroot Crosscompile Umgebung aufsetzen
mekakic
2013-08-02, 15:55:15
Hallo, ich habe zwei embedded Systeme (auf linux Tinycore Basis), für die ich gerne auf einer Ubuntu Maschine Binaries erzeugen würde. Da die Architekturen gleich sind, stell ich mir das so vor man kopiert sich eine Embedded Maschine komplett in ein Unterverzeichnis auf der Zielplattform und chroot'd sich da entsprechend rein
chroot /opt/tinycore3_1
cd mysrc
make
Übersehe ich dabei etwas oder müßte das so funktionieren, dass ich am Ende Binaries mit den richtigen glibc etc Abhängigkeiten erzeuge, die ich wiederum auf meine Embedded Plattform kopieren kann?
Danke! :)
Ja, du übersiehst dabei einiges.
- du benötigst alle die für das zielsystem notwendigen tools, binaries, bibliotheken, auf dieser kopie. diese müsstest du ggf. vorher in das vorhandene system installieren. da ich aber davon ausgehe, dass die embeded systeme begrenzte ressourcen (ram, rom) haben wird das wohl nichts werden. eine installation über das hostsystem in die kopie wäre möglich. kann aber auch zu unangenehmen nebenwirkungen in der paketverwaltung führen.
- chroot ist auch keine wirkliche arbeitserleichterung, da du die pfade für z. b. den compiler sowieso manuell anpassen musst. auch die architekturparameter musst du auf das zielsystem anpassen, da sich der compiler standardmässig viele parameter zum system aus dem hostsystem (/proc) zusammensucht und in die chroot-umgebung mit übernommen werden.
mekakic
2013-08-05, 10:22:10
Danke.
Punkt 1 hab ich nicht so ganz verstanden . Ich dachte mir ich kopiere wirklich das komplett Zielsystem zusätzlich mit den Buildtools, da sollte eigentlich alles dabei sein wie wenn ich auf dem Embedded System selbst baue. Das einzige was ich mir noch vorstellen könnte, das ich gcc -march nicht auf autodetect lassen darf.
Punkt 2: welche Pfade muß ich anpassen? Nach dem chroot sollten doch die absoluten Pfade wieder so funktionieren wie auf dem Zielsystem
das thema ist zu komplex um es in wenigen worten zusammen zu fassen.
evtl. hilft dir dieser link als einstieg:
http://www.linux-magazin.de/Ausgaben/2008/04/GNU-Tools-mal-kreuzweise
grundsätzlich würde ich cross-compiling nur fortgeschrittenen anwendern mit hoher frusttrationsgrenze empfehlen. ein ernst gemeinter rat!
zu 1 & 2:
woher soll die host-umgebung von diesen buildtools wissen? chroot stellt ja nur eine kopie der arbeitsumgebung des host-systems zur verfügung. erst wenn du alles notwendig auf dem host-system installiert hast steht dies auch in der chroot-umgebung zur verfügung. das problem bei der kopie ist eben auch die tatsache, dass die architektur der vorliegenden buildutilities nicht zur chroot-umgebung passt! wie willst du also mit einem für ein arm-system compilierten gcc unter x86-64 arbeiten? du brauchts also die toolchain auch auf dem host-system. in meinem vorhergenden post ging ich unter punkt 1 von einer installation aus. mein fehler. sry.
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.