Das Erstellen eines Cross-Compilers ist mit Freetz denkbar einfach:
make menuconfig
Hier unter Advanced options → Compiler options
die Optionen für den Cross-Compiler wählen. Soll der Compiler
Programme für eine mit Freetz erzeugte Firmware kompilieren, so ist
in der Regel nichts zu ändern. Soll der Compiler hingegen für eine
originale Firmware kompilieren können, so solltest du bei “uClibc
config” die entsprechende Konfiguration auswählen.
ACHTUNG: Im zweiten Fall sollte diese entpackte Instanz von Freetz nicht mehr zum Erstellen von Images verwendet werden, sondern nur noch der Cross-Compiler selbst.
make toolchain
./toolchain/kernel/bin/*-unknown-linux-gnu-gcc
:
Cross-Compiler für die Kernel Sourcen./toolchain/target/bin/*-linux-uclibc-gcc
: Cross-Compiler für
Userspace Programmemake libs
Erstellt alle im menuconfig ausgewählten Libraries und
installiert deren Header.Aus und seit Changeset r9983:
From now on one can build his own toolchains and use them as download toolchains by overriding the corresponding options under “Override options/Override precompiled toolchain options”:
The toolchains created in steps above can then be reused:
Some times it is easier to use a native development tools and compiler on the FritzBox directly by calling ./configure and build dependent libraries, test the according binaries directly on the box and find out configure options for packages which do not work for cross-compiling. Compiling can already be done for an 7270 box, performance-wise.
mount -o /var/InternerSpecher/uStor03/local /usr/local
cp -R toolchain/target/target-utils/lib addon/own-files-0.1/root
tar -cf ~/compiler.tar -C toolchain/target/target-utils/usr .
tar -cf ~/libsincs.tar -C toolchain/target/ bin lib include share
rm /usr/local/lib/libc.so /usr/local/lib/libpthread.so && (cd /usr/local/lib; ln -s /lib/libc.so.0 libc.so; ln -s /lib/libpthread.so.0 libpthread.so)
This is already enough for writing and testing hello world programs.
for i in /usr/local/lib/pkgconfig/*.pc; do sed 's~/home.*uclibc/usr~/usr/local~' $i > $i.tmp; mv $i.tmp $i; done
for i in /usr/local/bin/*-config; do sed 's~/home.*uclibc/usr~/usr/local~' $i > $i.tmp; mv $i.tmp $i; chmod a+x $i; done
for i in /usr/local/lib/*.la; do sed 's~/home.*uclibc/usr~/usr/local~' $i > $i.tmp; mv $i.tmp $i; done
./configure --prefix=/usr/local --disable-nls && make install
There you are, now configuring and making perl or other complex linux packages from source should be fine.
for f in $(svn --dry-run patch dev-tools_v4.patch | grep target | tr -d "'" | cut -d' ' -f4); do mkdir -p $(dirname $f); touch $f; svn add $(dirname $f) 2> /dev/null; rm $f; done
svn patch dev-tools_v4.patch
svn patch toolchain.patch
tar -xf *.external -C /usr/local
. /usr/local/bin/CFLAGS.sh