Bau eines Crosscompilers

laland

Neuer User
Mitglied seit
9 Feb 2008
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
Einen fröhlichen dritten Advent wünsche ich euch!

Ich bin auf der Suche nach einer Möglichkeit, für das Linux meiner Fritzbox einen Crosscompiler zu erstellen, mit dem ich von meinem normalen i386 aus, Programme für die Fritzbox kompilieren kann.

Meine Google-Suche ergab bisher leider nur halb-vollständige Anleitungen und mysteriöse Freizeit-Buildsysteme, die, abgesehen davon, dass sie meinen Kernel nicht unterstützen, schon beim kompilieren fehler erzeugen oder auf den webseiten, auf denen sie angespiesen nicht mit der korrekten Adresse verkinkt wurden.

Deswegen frage ich nun hier: Was muss ich tun um aus den Sources von gcc, binutils und dem Kernel, den man auf dem AVM-Server bekommt, einen Funktionsfähigen Crosscompiler mit uClibc bekommt? Gibt es hier vielleicht irgendwelche sachkundigen Linux-experten?

Habe zwar schon versucht, diese Sources auf das Ziel abgestimmt zu kompilieren, wurde jedoch immer wieder von Fehlern unterbrochen, die ich nicht zuordnen kann... :(

lg, L.
 
CC libbb/time.o
libbb/time.c: In function `monotonic_us':
libbb/time.c:20: error: `__NR_clock_gettime' undeclared (first use in this function)
libbb/time.c:20: error: (Each undeclared identifier is reported only once
libbb/time.c:20: error: for each function it appears in.)
libbb/time.c:20: error: `CLOCK_MONOTONIC' undeclared (first use in this function)
libbb/time.c: In function `monotonic_sec':
libbb/time.c:27: error: `__NR_clock_gettime' undeclared (first use in this function)
libbb/time.c:27: error: `CLOCK_MONOTONIC' undeclared (first use in this function)
make[2]: *** [libbb/time.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [libbb] Error 2
make[1]: Leaving directory `/home/la/freetz-1.0/source/busybox-tools/busybox-1.9.2'
make: *** [source/busybox-tools/busybox-1.9.2/busybox] Error 2

Das hier ergab dieses Freetz. Es ist ja nicht so, als hätte ich das nicht schon vorhergesehen. Genau aus diesem Grund habe ich ja gefragt, wie ich es selbst mache, so dass ich mir eine minimalistische Toolchain zusammenstelle, ohne dinge die ich eigentlich nur dann bräuchte, wenn ich die gesamte Firmware neu backen wollte.

lg, L
 
Busybox 1.9.2???

Meine: freetz-1.0.1-2803
Code:
BusyBox v1.11.3 (2008-12-07 14:31:10 CET) built-in shell (ash)

Hier sollte aber vielleicht jemand helfen, der mehr Ahnung hat.:rolleyes:

Einen einfacheren Weg ne Toolchain zu bauen, kenne ich auch nicht!
 
Die Busybox in busybox-tools wird sowieso für das Host-System erstellt.

Du solltest also mal Dein Host-System näher untersuchen bzw. beschreiben.
 
Was für Informationen über mein System wären denn erforderlich?
 
Nutzt du noch einen Kernel 2.4? Hab folgendes gefunden: http://www.busybox.net/lists/busybox/2008-February/030209.html

Code:
make dirclean
tools/make/Config.busybox editieren
make download-toolchain
Code:
Index: tools/make/Config.busybox
===================================================================
--- tools/make/Config.busybox (revision 2874)
+++ tools/make/Config.busybox (working copy)
@@ -88,7 +88,7 @@
 # CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
 # CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
 CONFIG_FEATURE_COPYBUF_KB=4
-CONFIG_MONOTONIC_SYSCALL=y
+# CONFIG_MONOTONIC_SYSCALL is not set
 CONFIG_IOCTL_HEX2STR_ERROR=y
 CONFIG_FEATURE_HWIB=y
Evtl. könnten wir das auch standardmäßig so ändern, da wir dieses Feature nicht nutzen!?

Ich hoffe ja, dass "Freizeit Buildsysteme" nicht auf Freetz gemüntzt war?

MfG Oliver
 
Was für Informationen über mein System wären denn erforderlich?

Wie wäre es für den Anfang mit Bezeichnung, Versionsnummer, Jahrhundert, in dem es erstellt wurde.
Oder besser noch, alles, was daran irgendwie außergewöhnlich sein könnte.

Handelt es sich um MacOS? Etwa gar Windows? CygWin?
Ein ungewöhnlich altes Linux-System?
Ein Linux-System, daß aus anderen Gründen den Systemaufruf clock_gettime nicht kennt?
 
Nutzt du noch einen Kernel 2.4?
FritzBox 7170 -> Kernel 2.6.13.1

Code:
Index: tools/make/Config.busybox
===================================================================
--- tools/make/Config.busybox (revision 2874)
+++ tools/make/Config.busybox (working copy)
@@ -88,7 +88,7 @@
 # CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
 # CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
 CONFIG_FEATURE_COPYBUF_KB=4
-CONFIG_MONOTONIC_SYSCALL=y
+# CONFIG_MONOTONIC_SYSCALL is not set
 CONFIG_IOCTL_HEX2STR_ERROR=y
 CONFIG_FEATURE_HWIB=y
Evtl. könnten wir das auch standardmäßig so ändern, da wir dieses Feature nicht nutzen!?
Darüber bin ich auch gerade gestolpert. Benutzen wohl die meisten eine vorkompilierte Toolchain, anstatt die selber zu bauen.

Als nächstes bin ich dann über ein "undefined reference to `bswap_64' in der "uClibc-0.9.29" gestolpert.

Und nachdem er sich jetzt in squashfs3.4 über die BYTE_ORDER beschwert wollt ich doch mal nachfragen: Sollte das einfach so funktionieren, oder hat das schon länger keiner mehr versucht?

Vorgehensweise war:
- aktueller trunk
- make menuconfig
--> Hardware type "7170"
--> Advanced options --> Toolchain options --> Toolchains -> [X] Build toolchain.
- make toolchain
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.