- Mitglied seit
- 3 Jan 2008
- Beiträge
- 6
- Punkte für Reaktionen
- 0
- Punkte
- 0
Puhh... das war (ist) ganz schön anstrengend!
Ich habe hier den ganzen Tag damit verbracht, verschiedene Versionen des gcc und der binutils als Cross-Compiler für mips zu übersetzen. Die meiste Zeit hat es Build-Fehler geregnet. So daß ich jetzt erst mal glücklich bin, daß ich eine Kombination von Versionen und Build-Parametern herausgefunden (= durch Zufall getroffen) habe, mit der ich erst mal einen lauffähigen gcc zustandegebracht habe.
Jetzt kann ich kompilieren:
gcc -c hello.c -o hello.o
Und ich scheine auch die richtige Architektur erwischt zu haben:
hello.o: ELF 32-bit MSB relocatable, MIPS, MIPS-I version 1 (SYSV), ...
Zum Vergleich das busybox Binary von horst:
busybox: ELF 32-bit MSB executable, MIPS, version 1 (SYSV), ...
Leider kann ich noch nicht linken:
gcc hello.c -o hello
/usr/local/horstbox/lib/gcc/mips-unknown-linux-gnu/3.4.6/../../../../mips-unknown-linux-gnu/bin/ld: crt1.o: No such file: No such file or directory
collect2: ld returned 1 exit status
Das liegt daran, daß ich noch keine mips-Version der glibc gebaut habe...
Das will ich mir aber eigentlich auch sparen, indem ich mir per apt-cross die Bibliotheken für mips fertig kompiliert herunterlade! Leider komme ich zurzeit noch nicht mit dem Tool klar...
Hier ein kleines Kochrezept, für das, was ich bisher geschafft habe:
tar -xjvf binutils-2.15.tar.bz2
mkdir build
mkdir build/binutils
cd build/binutils
../../binutils-2.15/configure \
--prefix=/usr/local/horstbox \
--target=mips-unknown-linux-gnu
make all install
cd ../..
tar -xjvf gcc-core-3.4.6.tar.bz2
mkdir build/gcc
cd build/gcc
CC=gcc-3.4 ../../gcc-3.4.6/configure \
--target=mips-unknown-linux-gnu \
--prefix=/usr/local/horstbox \
--disable-multilib --without-headers \
--disable-nls --enable-threads=no \
--enable-symvers=gnu \
--enable-__cxa_atexit \
--enable-languages=c \
--disable-shared \
--with-newlib
make all install
Keine Ahnung, was die ganzen anderen Schalter (außer --target und --prefix) bedeuten, das muß ich noch erforschen. Ich habe sie erstmal einfach von crosstools-0.43 übernommen...
Eigentlich wollte ich gcc-2.95.3 benutzen, aber wie gesagt habe ich lange gebraucht, bis ich überhaupt einen Build vollständig zuendebringen konnte.
Ich könnte mir aber vorstellen, daß es eigentlich nicht an den Versionen lag, sondern an fehlenden Build-Parametern...
Wenn mir da jemand Tipps geben kann bin ich immer glücklich
Ich werde mich demnächst nochmal an gcc-2.95.3 versuchen (weil in der Kernel-Doku von 2.4.31 steht, man solle den Kernel besser nicht mit einem neueren gcc übersetzen, wenn man sich Ärger ersparen will) und an einer passenden glibc...
Dir Frage ist nur, was eine passende glibc ist (geht ja leider nicht aus den bereitgestellten Quellen hervor) und ob der installierte Kernel wirklich mit gcc-2.95.3 kompiliert wurde (das Tuxbox-Projekt kompiliert deren 2.4er z.B. mit gcc-3.4.6). Die glibc-Version ist ja aber vielleicht auch egal, immerhin ist auf horst ja sowiso nur die libuClib installiert...
Ich wollte mal gucken, ob D-Link mir verrät, welche Versionen sie in ihrer Build-Umgebung benutzen. Würdet ihr für die Frage an den normalen Support mailen, oder hat jemand schon einen direkteren Draht zu den Entwicklern??
Gruß Kai
Ich habe hier den ganzen Tag damit verbracht, verschiedene Versionen des gcc und der binutils als Cross-Compiler für mips zu übersetzen. Die meiste Zeit hat es Build-Fehler geregnet. So daß ich jetzt erst mal glücklich bin, daß ich eine Kombination von Versionen und Build-Parametern herausgefunden (= durch Zufall getroffen) habe, mit der ich erst mal einen lauffähigen gcc zustandegebracht habe.
Jetzt kann ich kompilieren:
gcc -c hello.c -o hello.o
Und ich scheine auch die richtige Architektur erwischt zu haben:
hello.o: ELF 32-bit MSB relocatable, MIPS, MIPS-I version 1 (SYSV), ...
Zum Vergleich das busybox Binary von horst:
busybox: ELF 32-bit MSB executable, MIPS, version 1 (SYSV), ...
Leider kann ich noch nicht linken:
gcc hello.c -o hello
/usr/local/horstbox/lib/gcc/mips-unknown-linux-gnu/3.4.6/../../../../mips-unknown-linux-gnu/bin/ld: crt1.o: No such file: No such file or directory
collect2: ld returned 1 exit status
Das liegt daran, daß ich noch keine mips-Version der glibc gebaut habe...
Das will ich mir aber eigentlich auch sparen, indem ich mir per apt-cross die Bibliotheken für mips fertig kompiliert herunterlade! Leider komme ich zurzeit noch nicht mit dem Tool klar...
Hier ein kleines Kochrezept, für das, was ich bisher geschafft habe:
tar -xjvf binutils-2.15.tar.bz2
mkdir build
mkdir build/binutils
cd build/binutils
../../binutils-2.15/configure \
--prefix=/usr/local/horstbox \
--target=mips-unknown-linux-gnu
make all install
cd ../..
tar -xjvf gcc-core-3.4.6.tar.bz2
mkdir build/gcc
cd build/gcc
CC=gcc-3.4 ../../gcc-3.4.6/configure \
--target=mips-unknown-linux-gnu \
--prefix=/usr/local/horstbox \
--disable-multilib --without-headers \
--disable-nls --enable-threads=no \
--enable-symvers=gnu \
--enable-__cxa_atexit \
--enable-languages=c \
--disable-shared \
--with-newlib
make all install
Keine Ahnung, was die ganzen anderen Schalter (außer --target und --prefix) bedeuten, das muß ich noch erforschen. Ich habe sie erstmal einfach von crosstools-0.43 übernommen...
Eigentlich wollte ich gcc-2.95.3 benutzen, aber wie gesagt habe ich lange gebraucht, bis ich überhaupt einen Build vollständig zuendebringen konnte.
Ich könnte mir aber vorstellen, daß es eigentlich nicht an den Versionen lag, sondern an fehlenden Build-Parametern...
Wenn mir da jemand Tipps geben kann bin ich immer glücklich
Ich werde mich demnächst nochmal an gcc-2.95.3 versuchen (weil in der Kernel-Doku von 2.4.31 steht, man solle den Kernel besser nicht mit einem neueren gcc übersetzen, wenn man sich Ärger ersparen will) und an einer passenden glibc...
Dir Frage ist nur, was eine passende glibc ist (geht ja leider nicht aus den bereitgestellten Quellen hervor) und ob der installierte Kernel wirklich mit gcc-2.95.3 kompiliert wurde (das Tuxbox-Projekt kompiliert deren 2.4er z.B. mit gcc-3.4.6). Die glibc-Version ist ja aber vielleicht auch egal, immerhin ist auf horst ja sowiso nur die libuClib installiert...
Ich wollte mal gucken, ob D-Link mir verrät, welche Versionen sie in ihrer Build-Umgebung benutzen. Würdet ihr für die Frage an den normalen Support mailen, oder hat jemand schon einen direkteren Draht zu den Entwicklern??
Gruß Kai