Cross-Compile Toolchain FritzBox: Unterschied zwischen den Versionen

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen derselben Benutzerin werden nicht angezeigt)
Zeile 1: Zeile 1:
<div style="margin: 0; margin-top:10px; margin-right:10px; border: 1px solid #333333; padding: 0em 1em 1em 1em; background-color:#1B1C2D; align:right;">
<br><center>[[Datei:ZD-Logo.png]]</center>
<center><big><span style="color:#B5B5B5;">'''''Das Board mit Freiheiten'''''</span></big></center>
<font color=white></font>
----
<br>
<div style="margin: 0px 20px 15pt 15pt; border: 2px solid rgb(223, 223, 223); padding: 0em 1em 1em; background-color:#303140; border: 1px solid #000000;">
<br/>
{{Navi-Freetz-Sektion}}


== Toolchain von Freetz.org erstellen ==
== Toolchain von Freetz.org erstellen ==
Zeile 67: Zeile 76:
  # ./HelloFritzBox
  # ./HelloFritzBox
  Hallo Fritzbox.
  Hallo Fritzbox.
==Quellenangaben==
http://freetz.org/
== Wichtige Links  ==
*[[Hauptseite|Zurück zu Hauptseite]]
[[Category:Fritzbox]]
[[Category:Linux]]

Aktuelle Version vom 28. Februar 2012, 20:36 Uhr


Das Board mit Freiheiten




Einführung Freetz Pakete Freetz Addons Freetz Tipps Freetz chroot Freetz Images Freetz Faqs

Toolchain von Freetz.org erstellen

sudo, libncurses5-dev, binutils, make, patch, gcc, g++, zlib1g-dev,file müssen installiert sein (Liste ist nicht vollständig, siehe http://wiki.ip-phone-forum.de/software:ds-mod:installation).

Auf dem Kompilier-Rechner ausführen:

normal@vz2:~$ cd /usr/src/
normal@vz2:/usr/src$ svn co http://svn.freetz.org/tags/15.2 ds26-15.2
# // ... Warten ..
A    ds26-15.2/packages/screen-4.0.2/COPYING
A    ds26-15.2/packages/screen-4.0.2/README
 U   ds26-15.2
Checked out revision 2026.
normal@vz2:/usr/src$ cd ds26-15.2/
normal@vz2:/usr/src/ds26-15.2$ make menuconfig
# // Fritz!Box Version auswaehlen
normal@vz2:/usr/src/ds26-15.2$ make precompiled
# // ... Warten ... und dann symbolischer Link auf /usr/mipsel-linux-uclibc erstellen
normal@vz2:/usr/src/ds26-15.2$ sudo ln -s `pwd -L`/toolchain/target /usr/mipsel-linux-uclibc

Testprogramm

Ein kleines Testprogramm (hello.c) :

int main(int argc, char *argv)
{
  printf("Hallo Fritzbox.\n");
  return(0);
}

Testprogramm kompilieren

normal@vz2:~$ /usr/mipsel-linux-uclibc/bin/mipsel-linux-gcc hello.c -oHelloFritzBox
hello.c: In function 'main':
hello.c:3: warning: incompatible implicit declaration of built-in function 'printf'
# // Warnungen sind erstmal egal .. wichtig ist, daß beim folgenden etwas von MIPS erzählt wird:
normal@vz2:~$ file HelloFritzBox
HelloFritzBox: ELF 32-bit LSB executable, MIPS, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

Optimieren (stripping)

Da auf der Fritz!Box Speichermangel herrschen kann, ist es sinnvoll, die Größe der kompilierten Programme zu optimieren. Durch das Entfernen von Debug-Symbolen (stripping) kann Platz gespart werden.

normal@vz2:~$ du HelloFritzBox
8       HelloFritzBox
normal@vz2:~$ /usr/mipsel-linux-uclibc/bin/mipsel-linux-strip HelloFritzBox
normal@vz2:~$ du HelloFritzBox
4       HelloFritzBox
normal@vz2:~$ file HelloFritzBox
HelloFritzBox: ELF 32-bit LSB executable, MIPS, version 1 (SYSV), dynamically linked (uses shared libs), stripped

Optimieren (stripping/statisches kompilieren)

Um nicht von Bibliotheken (die auf der Fritz!Box nicht installiert sind) abhängig zu sein, kann man Programme auch statisch kompilieren. Das bedeutet, daß alle benutzten Bibliotheksfunktionen direkt im Programm enthalten sind (Die Binärdateien werden dann natürlich größer).

normal@vz2:~$ /usr/mipsel-linux-uclibc/bin/mipsel-linux-gcc -static hello.c -oHelloFritzBox
hello.c: In function 'main':
hello.c:3: warning: incompatible implicit declaration of built-in function 'printf'
normal@vz2:~$ file HelloFritzBox
HelloFritzBox: ELF 32-bit LSB executable, MIPS, version 1 (SYSV), statically linked, not stripped
normal@vz2:~$ du HelloFritzBox
20      HelloFritzBox
normal@vz2:~$ /usr/mipsel-linux-uclibc/bin/mipsel-linux-strip HelloFritzBox
normal@vz2:~$ du HelloFritzBox
16      HelloFritzBox
normal@vz2:~$ file HelloFritzBox
HelloFritzBox: ELF 32-bit LSB executable, MIPS, version 1 (SYSV), statically linked, stripped

Testen auf der Fritz!Box

Sobald das Kompilieren erfolgreich war, kann man die Binärdatei auf die Fritz!Box übertragen und dort testen:

# cd /var/tmp/
# chmod +x HelloFritzBox
# ./HelloFritzBox
Hallo Fritzbox.


Quellenangaben

http://freetz.org/

Wichtige Links