Cross Development Umgebung einrichten

maceis

Mitglied
Mitglied seit
9 Apr 2006
Beiträge
688
Punkte für Reaktionen
4
Punkte
18
hallo zusammen,

auch ich möchte mich einmal an das Kompilieren von Programmen für die Fritz!Box wagen. Einige Threads, die sich mit diesem Thema beschäftigen habe ich schon gelesen, komme aber immer noch nicht ganz zurecht (bzw. erhalte bei meinen Veruchen Fehler) und bitte daher um Eure Hilfe.
(Wer nicht alles lesen will: das aktuelle Problem staht ganz unten!)

Zunächst mal möchte ich die Grundlagen klären (ich hoffe, das kommt auch anderen Interessierten zugute) und bitte darum, dass die Erfehrenen unter Euch, das entweder besteätigen oder ggf. berichtigen.
Wenn ich alles richtig verstanden habe, benötigt man eine toolchain und binutils und richtet sich eine buildroot ein.

Die buildroot ist die Arbeitsumgebung innerhalb der man arbeitet.
Der Unterscheid zwischen toolchain und binutils ist mir nicht ganz klar. Wie ich es verstanden habe sind die binutils Bestandteil der toolchain.
Die toolchain bildet einen Satz von Programmen/Skripten/Makefiles etc. mit denen man die Umgebung konfiguriert und die Kompilierungen durchführt.

Ist das soweit richtig? Muss man außer 'buildroot' noch was anderes installlieren, oder bringt das die vollständige toolchain mit?

Der nächste Schritt wäre die praktische Umsetzung.
Hier habe ich die Besonderheit, dass ich das Ganze nach Möglichkeit unter Mac OS X (BSD Unix) durchführen möchte. Alternativ, wenn es mir unter Mac OS X nicht gelingt, unter Suse Linux, wobei sich die Frage stellt, ob Version 8.2 genügen würde oder ob ich eine Version 9 benutzen muss/sollte.

Unter Mac OS X habe ich mir hier (http://buildroot.uclibc.org/) buildroot runtergeladen. 'make menuconfig' kann ich ausführen, erhalte aber einige Warnungen (warning: pointer targets in passing argument 1 of 'xyz' differ in signedness)

Ich weiss aber nicht genau, was ich dann einstellen muss (mips oder mipsel?). Ich habe mal mips probiert und bei 'filesystem for target device' ext2 entfernt und 'squashfs root filesystem' angehakt und sonst alles belassen, wie es war.
[edit:]Ich glaube ich brauche 'mipsel', richtig?
Da passiert aber das selbe.[/edit]

Beim zweiten 'make' erhalte ich dann folgende Fehler:
Code:
% make                                                                                                                                        720 
if [ -f "target/generic/skel.tar.gz" ] ; then \
        zcat target/generic/skel.tar.gz | tar -C /Users/martin/code/01_cross/mips/buildroot/build_mips -xf -; \
fi;
[b]zcat: target/generic/skel.tar.gz[color=red].Z[/color]: No such file or directory[/b]
if [ -d "target/generic/target_skeleton" ] ; then \
        cp -fa target/generic/target_skeleton/* /Users/martin/code/01_cross/mips/buildroot/build_mips/root/; \
fi;
[b]cp: illegal option -- a[/b]
usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-pv] src target
       cp [-R [-H | -L | -P]] [-f | -i | -n] [-pv] src1 ... srcN directory
make: *** [/Users/martin/code/01_cross/mips/buildroot/build_mips/root] Error 64
Der zcat Fehler lässt sich beheben, wenn an der entsprechenden Stelle 'zcat' durch 'gunzip -c' ersetze. Laut manpage ergänzt 'zcat' die Ednung .Z, wenn diese nicht vorhanden ist, 'gunzip -c' ist identisch zu zcat, ergänzt aber den Dateinamen nicht.

Den Schalter -a gibt es auf meinem System nicht (der entspricht auch nicht der [/URL=http://www.unix.org/single_unix_specification/]SUSv3[/URL]) und warum der hier verwendet werden soll, ist mir auch rätselhaft. Also habe ich ihn einfach entfernt.

Das Ganze startet dann erst einmal, es werden 'linux-libc-headers-2.4.31.tar.bz2' und 'uClibc-snapshot.tar.bz2' heruntergeladen und einige Kommados ausgeführt.
Ein langes sed Kommando bricht dann mit folgender Fehlermeldung ab:
Code:
sed: lstat: No such file or directory
make: *** [/Users/martin/code/01_cross/mips/buildroot/toolchain_build_mips/uClibc/.configured] Error 1
'lstat' selbst kommt in dem ganzen sed Kommando nicht vor; ich hab auch kein 'lstat' auf meinem System, nur 'stat'

So, an der Stelle bin ich steckengeblieben und bitte um Eure Hilfe.
Danke im voraus.
 
Zuletzt bearbeitet:
Erstmal vorne weg: Du solltest die uClibc Version aus den AVM GPL Sourcen nehmen, d.h. du müßtest das Makefile der uClibc im buildroot dementsprechend abändern.

Mfg,
danisahne
 
danisahne schrieb:
Erstmal vorne weg: Du solltest die uClibc Version aus den AVM GPL Sourcen nehmen, d.h. du müßtest das Makefile der uClibc im buildroot dementsprechend abändern.

Mfg,
danisahne
Hm, was ich da am Makefile ändern muss, ist mir nicht klar, also hab ich's mal anders versucht.

Ich hab buildroot nochmal neu ausgepackt und ein dl Verzeichnis angelegt
Dann habe ich die uClibc aus den AVM Sourcen umbenannt, und in eine uClibc-snapshot.tar.bz2 gepacket und ins dl Verzeichnis gesteckt. Dann wird doch diese Datei verwendet.

Leider bleibt make wieder an der selben Stelle stecken, weil ich kein lstat auf meinem System habe.

Irgendwie ist mir das (noch) zu hoch ;).
 
Kostenlos!

Statistik des Forums

Themen
248,887
Beiträge
2,303,986
Mitglieder
378,568
Neuestes Mitglied
me2k