[Problem] Freetz-Toolchain für OSX

roadman17

Mitglied
Mitglied seit
8 Apr 2008
Beiträge
336
Punkte für Reaktionen
1
Punkte
0
Um unter OS X Lion auf eine virtuelle Maschine zu verzichten zu können, habe ich versucht, die Freetz-Toolchain unter OS X zu kompilieren.

Damit die GNU-Werkzeuge und der klassische GCC-Compiler und nicht der neue LLVM-Compiler verwendet werden, habe ich Gentoo Prefix verwendet. Außerdem habe ich ein Image erstellt, dass Groß- und Kleinschreibung unterscheiden kann.

Trunk 9262 habe ich frisch ausgecheckt. Danach habe ich die Standardkonfiguration verwendet und nur ausgewählt, dass die Toolchain kompiliert werden soll.
Für die busybox-tools habe ich von https://github.com/malkia/busybox-osx die fertig kompilierte busybox genommen und außer für makedevs die Symlinks erstellt, die auch sonst erstellt werden.

Nun habe ich mit
Code:
make GNU_HOST_NAME=x86_64-apple-darwin11.4.0 toolchain
den Kompiliervorgang gestartet. (GNU_HOST_NAME setze ich damit die gmp-Bibliothek kompiliert wird)

Das ganze endet mit folgendem Fehler:
Code:
# Build the host utils.
# Note: in order the host utils to work the __ELF_NATIVE_CLASS (= __WORDSIZE) of the host
# must match that of the target. That's the reason we hardcode the "-m32" option here.
make -j2 -C /Volumes/freetz/trunk/source/toolchain-mipsel_gcc-4.6.3_uClibc-0.9.32.1/uClibc-0.9.32.1/utils \
	LOCALE_DATA_FILENAME=uClibc-locale-030818.tgz V=2 \
	PREFIX=/Volumes/freetz/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc \
	HOSTCC="gcc  -D_GNU_SOURCE -fno-stack-protector -U_GNU_SOURCE -fno-strict-aliasing -m32" \
	BUILD_LDFLAGS="" \
	hostutils
make[1]: Entering directory `/Volumes/freetz/trunk/source/toolchain-mipsel_gcc-4.6.3_uClibc-0.9.32.1/uClibc-0.9.32.1/utils'
gcc  -D_GNU_SOURCE -fno-stack-protector -U_GNU_SOURCE -fno-strict-aliasing -m32 ../utils/getconf.c  -o ../utils/getconf.host    -Os -Wall -DUCLIBC_RUNTIME_PREFIX=\"/\" -DUCLIBC_LDSO=ld-uClibc.so.0  -DUCLIBC_RUNTIME_PREFIX=\"/\" -DUCLIBC_LDSO=ld-uClibc.so.0  -DGETCONF_DIR='"/Volumes/freetz/trunk/source/toolchain-mipsel_gcc-4.6.3_uClibc-0.9.32.1/uClibc-0.9.32.1/utils"'
gcc  -D_GNU_SOURCE -fno-stack-protector -U_GNU_SOURCE -fno-strict-aliasing -m32 ../utils/ldconfig.c ../utils/chroot_realpath.c -o ../utils/ldconfig.host    -Os -Wall -DUCLIBC_RUNTIME_PREFIX=\"/\" -DUCLIBC_LDSO=ld-uClibc.so.0  -DUCLIBC_RUNTIME_PREFIX=\"/\" -DUCLIBC_LDSO=ld-uClibc.so.0  -DBUILDING_LINKAGE -I../ldso/include
../utils/getconf.c:440: error: '_SC_CHARCLASS_NAME_MAX' undeclared here (not in a function)
In file included from ../utils/ldconfig.c:29:
../utils/porting.h:37:18: error: link.h: No such file or directory
../utils/getconf.c: In function 'print_all':
../utils/getconf.c:1095: error: '_SC_UINT_MAX' undeclared (first use in this function)
../utils/getconf.c:1095: error: (Each undeclared identifier is reported only once
../utils/getconf.c:1095: error: for each function it appears in.)
../utils/getconf.c:1096: warning: comparison between pointer and integer
../utils/getconf.c:1096: error: '_SC_ULONG_MAX' undeclared (first use in this function)
../utils/getconf.c:1096: warning: comparison between pointer and integer
../utils/getconf.c: In function 'main':
../utils/getconf.c:1182: warning: implicit declaration of function 'mempcpy'
../utils/getconf.c:1182: warning: incompatible implicit declaration of built-in function 'mempcpy'
../utils/getconf.c:1245: warning: incompatible implicit declaration of built-in function 'mempcpy'
../utils/getconf.c:1309: error: '_SC_UINT_MAX' undeclared (first use in this function)
../utils/getconf.c:1310: warning: comparison between pointer and integer
../utils/getconf.c:1310: error: '_SC_ULONG_MAX' undeclared (first use in this function)
../utils/getconf.c:1310: warning: comparison between pointer and integer
In file included from ../utils/ldconfig.c:170:
../utils/readsoname2.c: In function 'readsoname32':
../utils/readsoname2.c:3: warning: implicit declaration of function 'ElfW'
../utils/readsoname2.c:3: error: 'Ehdr' undeclared (first use in this function)
../utils/readsoname2.c:3: error: (Each undeclared identifier is reported only once
../utils/readsoname2.c:3: error: for each function it appears in.)make[1]: 
*** [../utils/getconf.host] Fehler 1
../utils/readsoname2.c:3: error: 'epnt' undeclared (first use in this function)
make[1]: ../utils/readsoname2.c:4: error: 'Phdr' undeclared (first use in this function)*** Warte auf noch nicht beendete Prozesse...

../utils/readsoname2.c:4: error: 'ppnt' undeclared (first use in this function)
../utils/readsoname2.c:7: error: 'Addr' undeclared (first use in this function)
../utils/readsoname2.c:7: error: expected ';' before 'dynamic_addr'
../utils/readsoname2.c:8: error: expected ';' before 'dynamic_size'
../utils/readsoname2.c:10: error: expected ';' before 'strtab_val'
../utils/readsoname2.c:11: error: expected ';' before 'needed_val'
../utils/readsoname2.c:12: error: expected ';' before 'loadaddr'
../utils/readsoname2.c:13: error: 'Dyn' undeclared (first use in this function)
../utils/readsoname2.c:13: error: 'dpnt' undeclared (first use in this function)
../utils/readsoname2.c:34: error: expected expression before ')' token
../utils/readsoname2.c:39: error: 'ELFDATA2MSB' undeclared (first use in this function)
../utils/readsoname2.c:41: error: 'ELFDATA2LSB' undeclared (first use in this function)
../utils/readsoname2.c:49: error: expected expression before ')' token
../utils/readsoname2.c:63: error: 'loadaddr' undeclared (first use in this function)
../utils/readsoname2.c:63: error: 'PT_LOAD' undeclared (first use in this function)
../utils/readsoname2.c:67: error: 'dynamic_addr' undeclared (first use in this function)
../utils/readsoname2.c:68: error: 'dynamic_size' undeclared (first use in this function)
../utils/readsoname2.c:73: error: expected expression before ')' token
../utils/readsoname2.c:84: error: 'DT_NULL' undeclared (first use in this function)
../utils/readsoname2.c:85: error: 'DT_STRTAB' undeclared (first use in this function)
../utils/readsoname2.c:86: error: 'strtab_val' undeclared (first use in this function)
../utils/readsoname2.c:97: error: expected expression before ')' token
../utils/readsoname2.c:99: error: 'DT_SONAME' undeclared (first use in this function)
../utils/readsoname2.c:99: error: 'DT_NEEDED' undeclared (first use in this function)
../utils/readsoname2.c:100: error: 'needed_val' undeclared (first use in this function)
In file included from ../utils/ldconfig.c:176:
../utils/readsoname2.c: In function 'readsoname64':
../utils/readsoname2.c:3: error: 'Ehdr' undeclared (first use in this function)
../utils/readsoname2.c:3: error: 'epnt' undeclared (first use in this function)
../utils/readsoname2.c:4: error: 'Phdr' undeclared (first use in this function)
../utils/readsoname2.c:4: error: 'ppnt' undeclared (first use in this function)
../utils/readsoname2.c:7: error: 'Addr' undeclared (first use in this function)
../utils/readsoname2.c:7: error: expected ';' before 'dynamic_addr'
../utils/readsoname2.c:8: error: expected ';' before 'dynamic_size'
../utils/readsoname2.c:10: error: expected ';' before 'strtab_val'
../utils/readsoname2.c:11: error: expected ';' before 'needed_val'
../utils/readsoname2.c:12: error: expected ';' before 'loadaddr'
../utils/readsoname2.c:13: error: 'Dyn' undeclared (first use in this function)
../utils/readsoname2.c:13: error: 'dpnt' undeclared (first use in this function)
../utils/readsoname2.c:34: error: expected expression before ')' token
../utils/readsoname2.c:39: error: 'ELFDATA2MSB' undeclared (first use in this function)
../utils/readsoname2.c:41: error: 'ELFDATA2LSB' undeclared (first use in this function)
../utils/readsoname2.c:49: error: expected expression before ')' token
../utils/readsoname2.c:63: error: 'loadaddr' undeclared (first use in this function)
../utils/readsoname2.c:63: error: 'PT_LOAD' undeclared (first use in this function)
../utils/readsoname2.c:67: error: 'dynamic_addr' undeclared (first use in this function)
../utils/readsoname2.c:68: error: 'dynamic_size' undeclared (first use in this function)
../utils/readsoname2.c:73: error: expected expression before ')' token
../utils/readsoname2.c:84: error: 'DT_NULL' undeclared (first use in this function)
../utils/readsoname2.c:85: error: 'DT_STRTAB' undeclared (first use in this function)
../utils/readsoname2.c:86: error: 'strtab_val' undeclared (first use in this function)
../utils/readsoname2.c:97: error: expected expression before ')' token
../utils/readsoname2.c:99: error: 'DT_SONAME' undeclared (first use in this function)
../utils/readsoname2.c:99: error: 'DT_NEEDED' undeclared (first use in this function)
../utils/readsoname2.c:100: error: 'needed_val' undeclared (first use in this function)
../utils/ldconfig.c: In function 'readsoname':
../utils/ldconfig.c:182: error: 'ELFCLASS32' undeclared (first use in this function)
../utils/ldconfig.c: In function 'is_shlib':
../utils/ldconfig.c:217: error: 'Ehdr' undeclared (first use in this function)
../utils/ldconfig.c:217: error: 'elf_hdr' undeclared (first use in this function)
../utils/ldconfig.c:258: error: expected expression before ')' token
../utils/ldconfig.c:273: error: 'EI_CLASS' undeclared (first use in this function)
In file included from ../utils/chroot_realpath.c:23:
../utils/porting.h:37:18: error: link.h: No such file or directory
make[1]: *** [../utils/ldconfig.host] Fehler 1
make[1]: Leaving directory `/Volumes/freetz/trunk/source/toolchain-mipsel_gcc-4.6.3_uClibc-0.9.32.1/uClibc-0.9.32.1/utils'
make: *** [/Volumes/freetz/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/usr/lib/libc.a] Fehler 2
Wie es scheint, wird die Datei link.h nicht gefunden.

Ein erneutes Ausführen von
Code:
make GNU_HOST_NAME=x86_64-apple-darwin11.4.0 toolchain
endet mit
Code:
tar -C /Volumes/freetz/trunk/source/host-tools  -xf tools/source/sstrip-1.0.tar.bz2
touch /Volumes/freetz/trunk/source/host-tools/sstrip-1.0/.unpacked
make -j2 -C /Volumes/freetz/trunk/source/host-tools/sstrip-1.0 \
	CC="gcc" \
	CFLAGS="-Wall -O2" \
	all
make[1]: Entering directory `/Volumes/freetz/trunk/source/host-tools/sstrip-1.0'
gcc -Wall -O2    sstrip.c   -o sstrip
sstrip.c:61:17: Fehler: elf.h: No such file or directory
sstrip.c:62:20: Fehler: endian.h: No such file or directory
sstrip.c:63:22: Fehler: byteswap.h: No such file or directory
sstrip.c:316: Fehler: expected declaration specifiers or »...« before »Elf32_Ehdr«
sstrip.c: In Funktion »readelfheaderident«:
sstrip.c:319: Fehler: »ehdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:319: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt
sstrip.c:319: Fehler: für jede Funktion in der er auftritt.)
sstrip.c:319: Fehler: »EI_NIDENT« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:324: Fehler: »EI_MAG0« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:324: Fehler: »ELFMAG0« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:325: Fehler: »EI_MAG1« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:325: Fehler: »ELFMAG1« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:326: Fehler: »EI_MAG2« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:326: Fehler: »ELFMAG2« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:327: Fehler: »EI_MAG3« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:327: Fehler: »ELFMAG3« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:336: Fehler: »EI_DATA« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:336: Fehler: »ELFDATA2LSB« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:338: Fehler: »ELFDATA2MSB« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:363: Fehler: »EI_CLASS« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c: Auf höchster Ebene:
sstrip.c:367: Fehler: expected declaration specifiers or »...« before »Elf32_Ehdr«
sstrip.c: In Funktion »readelfheader32«:
sstrip.c:367: Fehler: »ehdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: »EI_NIDENT« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: »uint64_t« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: »__res« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Warnung: Implizite Deklaration der Funktion »bswap_16«
sstrip.c:367: Warnung: Implizite Deklaration der Funktion »bswap_32«
sstrip.c:367: Warnung: Implizite Deklaration der Funktion »bswap_64«
sstrip.c:367: Fehler: »Elf32_Ehdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: »Elf32_Phdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: »ET_EXEC« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: »ET_DYN« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c: Auf höchster Ebene:
sstrip.c:367: Fehler: expected declaration specifiers or »...« before »Elf32_Ehdr«
sstrip.c:367: Fehler: expected declaration specifiers or »...« before »Elf32_Phdr«
sstrip.c: In Funktion »readphdrtable32«:
sstrip.c:367: Fehler: »uint64_t« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: »__res« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: »ehdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: »phdrs« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c: Auf höchster Ebene:
sstrip.c:367: Fehler: expected »)« before »const«
sstrip.c:367: Fehler: expected »)« before »*« token
sstrip.c:367: Fehler: expected declaration specifiers or »...« before »Elf32_Ehdr«
sstrip.c:367: Fehler: expected declaration specifiers or »...« before »Elf32_Phdr«
sstrip.c: In Funktion »commitchanges32«:
sstrip.c:367: Fehler: »ehdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: »uint64_t« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: »__res« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: »phdrs« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c:367: Fehler: expected »;« before »__res«
sstrip.c: Auf höchster Ebene:
sstrip.c:369: Fehler: expected declaration specifiers or »...« before »Elf64_Ehdr«
sstrip.c: In Funktion »readelfheader64«:
sstrip.c:369: Fehler: »ehdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: »EI_NIDENT« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: »uint64_t« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: »__res« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: »Elf64_Ehdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: »Elf64_Phdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: »ET_EXEC« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: »ET_DYN« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c: Auf höchster Ebene:
sstrip.c:369: Fehler: expected declaration specifiers or »...« before »Elf64_Ehdr«
sstrip.c:369: Fehler: expected declaration specifiers or »...« before »Elf64_Phdr«
sstrip.c: In Funktion »readphdrtable64«:
sstrip.c:369: Fehler: »uint64_t« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: »__res« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: »ehdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: »phdrs« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c: Auf höchster Ebene:
sstrip.c:369: Fehler: expected »)« before »const«
sstrip.c:369: Fehler: expected »)« before »*« token
sstrip.c:369: Fehler: expected declaration specifiers or »...« before »Elf64_Ehdr«
sstrip.c:369: Fehler: expected declaration specifiers or »...« before »Elf64_Phdr«
sstrip.c: In Funktion »commitchanges64«:
sstrip.c:369: Fehler: »ehdr« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: »uint64_t« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: »__res« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: »phdrs« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c:369: Fehler: expected »;« before »__res«
sstrip.c: In Funktion »main«:
sstrip.c:424: Fehler: expected specifier-qualifier-list before »Elf32_Ehdr«
sstrip.c:428: Fehler: expected specifier-qualifier-list before »Elf32_Phdr«
sstrip.c:466: Fehler: »struct stat« hat kein Element namens »st_atim«
sstrip.c:467: Fehler: »struct stat« hat kein Element namens »st_mtim«
sstrip.c:470: Fehler: »union <anonymous>« hat kein Element namens »ehdr32«
sstrip.c:470: Fehler: zu viele Argumente für Funktion »readelfheaderident«
sstrip.c:471: Fehler: »ELFCLASS32« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:472: Fehler: »union <anonymous>« hat kein Element namens »ehdr32«
sstrip.c:472: Fehler: zu viele Argumente für Funktion »readelfheader32«
sstrip.c:473: Fehler: »union <anonymous>« hat kein Element namens »ehdr32«
sstrip.c:473: Fehler: »union <anonymous>« hat kein Element namens »phdrs32«
sstrip.c:473: Fehler: zu viele Argumente für Funktion »readphdrtable32«
sstrip.c:474: Warnung: Implizite Deklaration der Funktion »getmemorysize32«
sstrip.c:474: Fehler: »union <anonymous>« hat kein Element namens »ehdr32«
sstrip.c:474: Fehler: »union <anonymous>« hat kein Element namens »phdrs32«
sstrip.c:476: Warnung: Implizite Deklaration der Funktion »modifyheaders32«
sstrip.c:476: Fehler: »union <anonymous>« hat kein Element namens »ehdr32«
sstrip.c:476: Fehler: »union <anonymous>« hat kein Element namens »phdrs32«
sstrip.c:477: Fehler: »union <anonymous>« hat kein Element namens »ehdr32«
sstrip.c:477: Fehler: »union <anonymous>« hat kein Element namens »phdrs32«
sstrip.c:477: Fehler: zu viele Argumente für Funktion »commitchanges32«
sstrip.c:480: Fehler: »ELFCLASS64« nicht deklariert (erste Benutzung in dieser Funktion)
sstrip.c:481: Fehler: »union <anonymous>« hat kein Element namens »ehdr64«
sstrip.c:481: Fehler: zu viele Argumente für Funktion »readelfheader64«
sstrip.c:482: Fehler: »union <anonymous>« hat kein Element namens »ehdr64«
sstrip.c:482: Fehler: »union <anonymous>« hat kein Element namens »phdrs64«
sstrip.c:482: Fehler: zu viele Argumente für Funktion »readphdrtable64«
sstrip.c:483: Warnung: Implizite Deklaration der Funktion »getmemorysize64«
sstrip.c:483: Fehler: »union <anonymous>« hat kein Element namens »ehdr64«
sstrip.c:483: Fehler: »union <anonymous>« hat kein Element namens »phdrs64«
sstrip.c:485: Warnung: Implizite Deklaration der Funktion »modifyheaders64«
sstrip.c:485: Fehler: »union <anonymous>« hat kein Element namens »ehdr64«
sstrip.c:485: Fehler: »union <anonymous>« hat kein Element namens »phdrs64«
sstrip.c:486: Fehler: »union <anonymous>« hat kein Element namens »ehdr64«
sstrip.c:486: Fehler: »union <anonymous>« hat kein Element namens »phdrs64«
sstrip.c:486: Fehler: zu viele Argumente für Funktion »commitchanges64«
make[1]: *** [sstrip] Fehler 1
make[1]: Leaving directory `/Volumes/freetz/trunk/source/host-tools/sstrip-1.0'
make: *** [/Volumes/freetz/trunk/source/host-tools/sstrip-1.0/sstrip] Fehler 2

Hat einer eine Idee, wie ich zumindest vorerst die Toolchain kompilieren kann?
 
Kurz gesagt, wenn Du nicht eine virtuelle Maschine verwenden willst, in der alles bereits fertig eingerichtet ist, dann ist das Deine Sache.
 
Danke für die Antwort. Ich habe auch nichts gegen eine virtuelle Maschine. Ich fände es eben nur schöner, wenn es auch ohne gehen würde und habe gehofft, dass jemand weiß, wie dies geht. So werde ich dann eben bei der virtuellen Maschine bleiben.

EDIT:
Die Toolchain scheint nun zu funktionieren. Da die Openwrt-Toolchain sich problemlos kompilieren lässt, habe ich von dort die sstrip übernommen.
Auf sfk163, squashfs2.2-r2 und squashfs3.4 habe ich verzichtet, da diese für die Freetz-Toolchain vermutlich nicht notwendig sind. Ein Image lässt sich so natürlich nicht erstellen.
Zum Test habe ich mit "make wget-precompiled" wget kompiliert. Diese funktioniert auch auf meiner Fritzbox.
 
Zuletzt bearbeitet:
Da keiner der Entwickler einen MAC hat hat sich bis jetzt keiner darum gekümmert. Wir nehmen natürlich gerne Patches entgegen...

Gruß
Oliver
 
Ich hab zwar einen Mac, sehe aber eklen Notwendigkeit, darauf überhaupt zu kompilieren. Zu viel Aufwand, da lass ich lieber weiter meinen Linux-Server bauen,.
 
Mit dem Aufwand hast du wohl Recht. Ich stelle aber trotzdem den einen Patch für sfk163, squashfs2.2-r2 und squashfs3.4 bereit, der es ermöglicht diese Programme auf einen Mac zu kompilieren. Damit müsste ich eigentlich alle Werkzeuge außer makedevs haben.
 

Anhänge

  • osx.patch.txt
    4.7 KB · Aufrufe: 10
Danke roadman.

Spricht was dagegen die Patches aufzunehmen? Da sich die Version von squashfs2 und 3 nicht mehr ändern werden dürfte sich der Aufwand die Patches zu pflegen doch sehr in Grenzen halten...

Gruß
Oliver
 
Ich wüsste keinen Grund, der dagegen spricht. Für Linux-Rechner dürfte sich mit dem Patch eigentlich nichts verändert haben. Bei sfk habe ich übrigens die Versionsnummer aktualisiert.
Den Patch für squashfs2 habe ich übrigens von http://katastrophos.net/andre/blog/2005/10/25/mksquashfs-for-os-x/ übernommen.

EDIT:
Mit dem angehängten Patch lässt sich auch erfolgreich das Standardimage bauen.
Der Patch enthält einen Patch von OpenWRT für das Crosscompilieren von busybox und einige kleine Anpassungen an fwmod und tools/scriptpatcher.sh.

Da unter OS X normalerweise /proc nicht verfügbar ist, habe ich in fwmod eine kleine Überprüfung eingebaut bevor auf /proc zugegriffen wird. Diese Änderung kann eventuell unerwünschte Nebeneffekte haben.
Es wäre mit MacFUSE auch möglich /proc unter OS X zu mounten, was ich aber wegen dieser kleinen Überprüfung nicht für notwendig halte.

Ich habe nun alle Werkzeuge bis auf die busybox-tools und host-sstrip mit der Freetz-Toolchain gebaut. Die beiden Werkzeuge habe ich manuell reinkopiert. Für die busybox habe ich busybox-osx verwendet und einfach im Konfigurationsmenü makedevs ausgewählt und danach die busybox erstellt.

Da unter OS X die Anzahl der gleichzeitig geöffneten Dateien stark beschränkt ist, muss mit ulimit -n 2000
das Limit erhöht werden, damit die Firmware entpackt werden kann. Danach kann das Image mit make erstellt werden.
Anhang anzeigen portability.patch.txt
 
Zuletzt bearbeitet:
Ich hab die 2 Patches und den Fix für sfk eingecheckt und im Kommentar hierauf verwiesen.

Gruß
Oliver
 
Bei den Patches ist mir folgendes aufgefallen:

220-osx.squashfs3.patch:
mksquashfs.c:
Hier steht #elif ohne etwas dahinter, das mag der Compiler vermutlich nicht.
Die Einrückung ist durcheinander gekommen.
unsquashfs.c:
Hier ist in beiden Fällen FNM_EXTMATCH entfernt, das heißt, dass die Funktionalität entfernt wurde, die Unterscheidung wäre damit unnötig.

Da anscheinend dem Apple das FNM_EXTMATCH fehlt, ist es besser, das so zu machen:
Code:
#ifdef __APPLE__
#define FNM_EXTMATCH 0
#endif

Damit sieht man direkt, dass dem Apple das FNM_EXTMATCH fehlt und der komplette Rest bleibt unverändert.

In sfk.mk is der einzig erkennbare Unterschied, dass -DMAC_OS_X mit übergeben wird. Wenn der Compiler schon __APPLE__ abfragt, wäre es dann nicht besser, wenn sfk darauf reagieren würde statt auf MAC_OS_X?
 
Mit einem frisch ausgecheckten Trunk funktioniert nun direkt
Code:
make squashfs squashfs3 sfk

Den eleganteren Vorschlag zu squashfs3 habe ich nun als Patch angehängt.

Es wäre wirklich praktischer, wenn direkt wenn sich sfk unter OSX genauso kompilieren ließe, wie unter Linux-Systemen. Ich habe aber nur die Anleitung in der do_compile_unix.bat befolgt
g++ -s sfk.cpp sfknet.cpp patch.cpp inst.cpp -o sfk

# to compile SFK for old linux systems with lib5:
# g++-3.3 -s sfk.cpp sfknet.cpp patch.cpp inst.cpp -DSFK_LIB5 -o sfk-linux-lib5.exe

# to compile for Mac, use
# g++ -DMAC_OS_X sfk.cpp sfknet.cpp patch.cpp inst.cpp -o sfk
da dies zukünftig wahrscheinlich dann mit einer neueren Version noch genauso funktioniert. Ein Patch müsste da unter Umständen angepasst werden.
 

Anhänge

  • ralf.patch.txt
    3 KB · Aufrufe: 4
Ich habe den Autor nun über SourceForge kontaktiert.
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
246,782
Beiträge
2,257,378
Mitglieder
374,826
Neuestes Mitglied
teresachavez5000
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.