[How-To] Crosscompilieren eigener IPK Pakete
Anleitung zum Cross-Compilieren von IPK Paketen
Einführung:
Hallo zusammen,
ich hatte schon längere Zeit vor mir das anzuschauen, da ich selber ein altes Paket vom rtorrent neu compilieren wollte.
Hier nun meine Vorgehensweise wie ich zum Ziel gekommen bin.
1.) Linux Distribution
Ich habe dafür Debian 4.0_r3 in der Stable Version benutzt. Der große Vorteil bei Debian ist der Paket Manager
apt-get mit dem man sehr einfach Software mit den entsprechenden Abhängigkeiten installieren kann.
Code:
Download: http://cdimage.debian.org/debian-cd/4.0_r3/i386/iso-cd/debian-40r3-i386-CD-1.iso
Die installation gestaltet sich auch sehr einfach. Von der CD booten und den anweisungen in Textgeführten Installer folgen.
Ich habe Desktop und Standartumgebung ausgewählt da dies einfach komfortabler für weitere Aktionen ist.
Wichtig, hierbei muss eine Internet verbindung bestehen, damit er entsprechende Pakete nachholen kann.
2.) Installation Benötigter Tools
Zum Cross kompilieren benötigen wir unterschiedliche Developer Tools. Mit folgendem Befehl werden alle benötigten Pakete installiert:
Code:
apt-get install gcc cvs subversion flex bison make pkg-config rsync gettext libglib2.0-dev autoconf libtool automake1.9 sudo patch bzip2 gzip wget sed
3.) SVN checkout der Optware Umgebung
Code:
cd /opt
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
cd optware
Dieser Befehl erstellt im /opt ein Unterverzeichniss optware in dem die Cross-Compilier Umgebung hin ausgecheckt wird.
4.) Erstellen der Oleg Arbeitsumgebung im optware Verzeichniss
Code:
make oleg-target
cd oleg
make directories ipkg-utils
5.) IPK Paket compilieren
Zum Verständnis, unter /opt/optware/oleg/make liegen alle *.mk Buildscripte um die verschiedenen Packete zu erstellen.
Wenn Ihr nun einfach ein aktuelles IPK Packet neu compilieren wollt, dann einfach folgenden Befehl eingeben.
Code:
cd /opt/optware/oleg
make Paketname
Ich empfehle am Anfang es mit einem kleinen Packet zu testen wie "which".
Das dauert im Normalfall nicht sehr lange zum compilieren.
Wenn er hier durchgelaufen ist müssen wir noch die eigentliche *.ipk Datei erstellen.
Das geht mit folgenden beiden Befehlen.
Code:
make Paketname-ipk (Dies erstellt das Packet und die IPK Datei)
make Paketname-check (Dies überprüft nochmal die soeben erstellte IPK Datei)
6.) Ältere Versionen comillieren
Wenn Ihr wie ich, eine ältere Version compilieren wollt, geht Ihr wie folgt vor.
Auf der Webseite http://trac.nslu2-linux.org/optware/browser/trunk/make
Sind alle *.mk Buildscripte gelistet. Sucht euer Entsprechendes Paket aus und klickt es an. Rechts oben auf Revision Log klicken um auch die älteren Stände zu sehen.
Dort könnt Ihr dann anhand der Log-Message auswählen welchen alte Buildscript Ihr wollt. Entsprechen das @xxxx anklicken und am Ende der Seite auf Original Format klicken.
Dadurch könnt Ihr das alte Buildscript runterladen.
Die gedownloadete Datei nach /opt/optware/oleg/make kopieren. Am besten die aktuelle *.mk Datei vorher wegsichern.
Viel Spaß beim erstellen eigener IPK Pakete.
Gruß FastJack
P.S.: Bei Fragen einfach hier in dem Beitrag Posten.
Habe mal den Admin für das German Forum angeschrieben
Hi,
Quote:
Originally Posted by
FastJack
wie kann man denn seinen Beitrag zum sticky machen einreichen? :rolleyes:
habe mal den Admin für das German Forum angeschrieben.
Gruß.
eigene Software kompilieren
Hallo Zusammen
bin hier neu und nicht ganz sicher ob dies der richtige Thread ist:
Ich will ein eigenes kleines C-Programm für den ASUS WL-500gP compilieren und dort permanent installieren. Aus diesem Grund hatte ich mir schon die ASUS-Toolchain mit der "OLEG-Erweiterung" nach der Anleitung http://wiki.wl500g.info/index.php/co...customfirmware zusammengestellt. Allerdings bekomme ich dort beim kompilieren des Kernel (make kernel) nach einiger Zeit einen Fehler, dass ein Patch nicht gefunden wurde.:mad:
Nun habe ich diesen Thread entdeckt und nach der hier beschriebenen Anleitung alles installiert.
Könnt Ihr mir sagen wie
...ich,mit welchen Parametern, Pfaden, etc, mein C-Programm aufrufen muss, dass es für den ASUS-Router kompiliert wird. Das Programm benötigt einige Libraries, wie -lm, welche ich statisch dazubinden möchte.
...ich diese kompilierte Programm nun permanent auf dem Router installieren kann. Nach meinem Verständnis muss dieses Programm mit ins Packet hineingebracht werden...(?)
Vielen Dank schon mal.
toolchain kompiliert nicht
hi leute,
ich kann den toolchain nicht kompilieren. hier meine bisherigen versuche
Code:
cd /opt
mkdir slug
cd slug
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
cd optware
make oleg-target
cd oleg
make directories
make ipkg-utils
make toolchain
> bei den folgenden auswahlen immer ENTER gedrückt
bei ausführen des letzten schritts bekommen ich die folgende fehlermeldung
Code:
find /opt/slug/optware/oleg/toolchain/buildroot/build_mipsel/root -type d -name .svn | xargs rm -rf
Checking build system dependencies:
CC clean: Ok
CXX clean: Ok
CPP clean: Ok
CFLAGS clean: Ok
CXXFLAGS clean: Ok
sed works: Ok
which installed: Ok
GNU make version '3.81': Ok
C compiler '/usr/bin/gcc'
C compiler version '4.1.1': Ok
bison installed: Ok
flex installed: Ok
gettext installed: Ok
Build system dependencies: Ok
wget --passive-ftp -nd -P /opt/slug/optware/oleg/toolchain/buildroot/dl http://www.uclibc.org/downloads/toolchain/linux-libc-headers-oleg.tar.bz2
--2008-05-27 18:44:04-- http://www.uclibc.org/downloads/toolchain/linux-libc-headers-oleg.tar.bz2
Resolving www.uclibc.org... 140.211.166.42
Connecting to www.uclibc.org|140.211.166.42|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2008-05-27 18:44:05 ERROR 404: Not Found.
make[1]: *** [/opt/slug/optware/oleg/toolchain/buildroot/dl/linux-libc-headers-oleg.tar.bz2] Error 1
der fehler ist logisch denn auf http://www.uclibc.org/downloads/toolchain/ besteht keine datei linux-libc-headers-oleg.tar.bz2.
die datei steht eigentlich auf http://www.wlan-sat.com/boleo/optware
in buildroot.mk hab ich folgendes gefunden
Code:
/opt/slug/optware/oleg/make/buildroot.mk
...
82 # Oleg firmware for Asus Wireless routers
83 HEADERS_OLEG_SITE=http://www.wlan-sat.com/boleo/optware
84 HEADERS_OLEG_SOURCE=linux-libc-headers-oleg.tar.bz2
85 HEADERS_OLEG_UNPACK_DIR=linux
86 HEADERS_OLEG=LINUX_HEADERS_SOURCE=$(HEADERS_OLEG_SOURCE) \
87 LINUX_HEADERS_UNPACK_DIR=$(BUILDROOT_HEADERS_DIR)/$(HEADERS_OLEG_UNPACK_DIR)
88 $(DL_DIR)/$(HEADERS_OLEG_SOURCE):
89 $(WGET) -P $(DL_DIR) $(HEADERS_OLEG_SITE)/$(HEADERS_OLEG_SOURCE)
...
in zeile 86 wird LINUX_HEADERS_SOURCE mit der oleg datei version überschrieben, allerdings wird nirgends der link zur downloadseite angepasst (LINUX_HEADERS_SITE).
als test hab ich zeile 86 folgendermassen geändert
Code:
86 HEADERS_OLEG=$(HEADERS_OLEG_SOURCE) \
der download funktioniert dann, allerdings sind das nicht olegs header...
Code:
wget --passive-ftp -nd -P /opt/slug/optware/oleg/toolchain/buildroot/dl http://www.uclibc.org/downloads/toolchain/linux-libc-headers-2.4.31.tar.bz2
--2008-05-27 19:10:45-- http://www.uclibc.org/downloads/toolchain/linux-libc-headers-2.4.31.tar.bz2
Resolving www.uclibc.org... 140.211.166.42
Connecting to www.uclibc.org|140.211.166.42|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4194659 (4.0M) [application/x-tar]
Saving to: `/opt/slug/optware/oleg/toolchain/buildroot/dl/linux-libc-headers-2.4.31.tar.bz2'
100%[========================================================================================================================================================================>] 4,194,659 95.3K/s in 51s
2008-05-27 19:11:37 (80.4 KB/s) - `/opt/slug/optware/oleg/toolchain/buildroot/dl/linux-libc-headers-2.4.31.tar.bz2' saved [4194659/4194659]
... und das spätere patchen geht schief ...
Code:
wget --passive-ftp -nd -P /opt/slug/optware/oleg/toolchain/buildroot/dl http://www.uclibc.org/downloads/snapshots/uClibc-snapshot.tar.bz2
--2008-05-27 19:11:42-- http://www.uclibc.org/downloads/snapshots/uClibc-snapshot.tar.bz2
Resolving www.uclibc.org... 140.211.166.42
Connecting to www.uclibc.org|140.211.166.42|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3533646 (3.4M) [application/x-tar]
Saving to: `/opt/slug/optware/oleg/toolchain/buildroot/dl/uClibc-snapshot.tar.bz2'
100%[========================================================================================================================================================================>] 3,533,646 73.7K/s in 51s
2008-05-27 19:12:34 (67.4 KB/s) - `/opt/slug/optware/oleg/toolchain/buildroot/dl/uClibc-snapshot.tar.bz2' saved [3533646/3533646]
mkdir -p /opt/slug/optware/oleg/toolchain/buildroot/toolchain_build_mipsel
bzcat /opt/slug/optware/oleg/toolchain/buildroot/dl/uClibc-snapshot.tar.bz2 | tar -C /opt/slug/optware/oleg/toolchain/buildroot/toolchain_build_mipsel -xf -
toolchain/patch-kernel.sh /opt/slug/optware/oleg/toolchain/buildroot/toolchain_build_mipsel/uClibc toolchain/uClibc/ uClibc-0.9.29\*.patch
cat ../../sources/buildroot/uClibc-patches/*.patch | patch -d /opt/slug/optware/oleg/toolchain/buildroot/toolchain_build_mipsel/uClibc -p1
patching file Makefile
Hunk #1 FAILED at 163.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.rej
patching file libc/sysdeps/linux/mips/sigaction.c
Hunk #1 FAILED at 49.
1 out of 1 hunk FAILED -- saving rejects to file libc/sysdeps/linux/mips/sigaction.c.rej
patching file libc/sysdeps/linux/mips/pipe.S
Hunk #1 FAILED at 10.
1 out of 1 hunk FAILED -- saving rejects to file libc/sysdeps/linux/mips/pipe.S.rej
patching file libm/Makefile
Hunk #1 FAILED at 81.
1 out of 1 hunk FAILED -- saving rejects to file libm/Makefile.rej
patching file ldso/include/dl-string.h
Reversed (or previously applied) patch detected! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
3 out of 3 hunks ignored -- saving rejects to file ldso/include/dl-string.h.rej
patching file ldso/ldso/arm/dl-sysdep.h
Reversed (or previously applied) patch detected! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file ldso/ldso/arm/dl-sysdep.h.rej
patching file ldso/include/dl-defs.h
Hunk #1 succeeded at 36 (offset 23 lines).
patching file ldso/ldso/dl-elf.c
Hunk #1 succeeded at 306 (offset -61 lines).
patching file extra/Configs/Config.in
Hunk #1 succeeded at 1158 (offset 171 lines).
patching file libm/s_lrint.c
patching file libm/float_wrappers.c
Reversed (or previously applied) patch detected! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
2 out of 2 hunks ignored -- saving rejects to file libm/float_wrappers.c.rej
patching file libm/Makefile
Hunk #1 FAILED at 59.
1 out of 1 hunk FAILED -- saving rejects to file libm/Makefile.rej
patching file utils/ldconfig.c
Hunk #1 FAILED at 956.
Hunk #2 FAILED at 971.
2 out of 2 hunks FAILED -- saving rejects to file utils/ldconfig.c.rej
patching file include/paths.h
Hunk #2 FAILED at 48.
Hunk #3 FAILED at 72.
2 out of 3 hunks FAILED -- saving rejects to file include/paths.h.rej
patching file utils/ldd.c
Hunk #1 FAILED at 437.
Hunk #2 FAILED at 671.
2 out of 2 hunks FAILED -- saving rejects to file utils/ldd.c.rej
patching file libc/sysdeps/linux/common/bits/in.h
Hunk #1 FAILED at 115.
1 out of 1 hunk FAILED -- saving rejects to file libc/sysdeps/linux/common/bits/in.h.rej
patching file libc/misc/internals/__uClibc_main.c
Hunk #1 FAILED at 28.
1 out of 1 hunk FAILED -- saving rejects to file libc/misc/internals/__uClibc_main.c.rej
make[1]: *** [/opt/slug/optware/oleg/toolchain/buildroot/toolchain_build_mipsel/uClibc/.unpacked] Error 1
...
als letzten versuch hab ich kernel-headers-old.makefile angepasst. dieses file wird in kernel-headers.mk inkludiert und dort steht auch der wget befehl zum downloaden der header
Code:
/opt/slug/optware/oleg/toolchain/buildroot/toolchain/kernel-headers/kernel-headers.mk
...
28 $(DL_DIR)/$(LINUX_HEADERS_SOURCE):
29 $(WGET) -P $(DL_DIR) $(LINUX_HEADERS_SITE)/$(LINUX_HEADERS_SOURCE)
...
die files stehen im folgenden verzeichniss
* /opt/slug/optware/oleg/toolchain/buildroot/toolchain/kernel-headers/
in kernel-headers-old.makefile die folgende zeile hinzuggefügt...
Code:
...
105 LINUX_HEADERS_SITE:=http://www.wlan-sat.com/boleo/optware
106
107 # the old sanitized kernel-headers
...
...und die oleg header werden runtergeladen...
Code:
wget --passive-ftp -nd -P /opt/slug/optware/oleg/toolchain/buildroot/dl http://www.wlan-sat.com/boleo/optware/linux-libc-headers-oleg.tar.bz2
--2008-05-27 20:09:22-- http://www.wlan-sat.com/boleo/optware/linux-libc-headers-oleg.tar.bz2
Resolving www.wlan-sat.com... 212.18.63.81
Connecting to www.wlan-sat.com|212.18.63.81|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3331707 (3.2M) [application/x-tar]
Saving to: `/opt/slug/optware/oleg/toolchain/buildroot/dl/linux-libc-headers-oleg.tar.bz2'
100%[========================================================================================================================================================================>] 3,331,707 17.6K/s in 3m 16s
2008-05-27 20:12:39 (16.6 KB/s) - `/opt/slug/optware/oleg/toolchain/buildroot/dl/linux-libc-headers-oleg.tar.bz2' saved [3331707/3331707]
... aber das patchen geht immer noch schief, mit den gleichen fehlermeldungen wie oben.
kann mir da jeman weiter helfen? vielleicht ein uclibc problem? und sorry das der eintrag sooooo lang geworden ist, hehe. übrigens scheint jemand im russischen forum das gleiche problem zu haben
beste gruesse, olo
Crosscompilieren geht nicht mehr - HILFE
In der Unslug FAQ
http://www.nslu2-linux.org/wiki/FAQ/Optware-uClibcBuild
geht das
Code:
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
unter "Native compilation on router itself"
einfach nicht mehr und bricht mit einer unschönen Meldung ab:
Code:
[admin@Server disc0_3]$ svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
svn: Can't read directory 'optware': Operation now in progress
Gibt es überhaupt noch ein funktionierendes HowTo?
Wer hat eine Idee?
Crosscompile für Wl500gV2
Hallo,
ich habe einen Wl500gpV2 mit Olegs FW. Unter Ubuntu habe ich nach dieser Anleitung versucht z.B. which cross zu kompilieren. Leider funktionieren die Binaries auf dem Router nicht (sh: ... not found). Muss ich noch etwas beachten, um speziell für dieses Target zu kompilieren?
Gruß und Dank
delmo