grisu
Active Member
Hallo zusammen,
ich versuche mir gerade einen Cross-Compiler einzurichten um unter Linux Binarys für FreeBSD zu compilieren. Der Grund ist der, dass ich mir einen alten Rechner für FreeBSD abgestellt habe ( 800Mhz P3 512MB RAM) und beim Compilieren auf der Ports gerne mittels icecc die anderen im Haushaltbefindlichen Rechner als Compile-Farm nutzen will. Problem an der Sache, die anderen 4 Rechner sind alles Linux-Rechner und mal eben so umstellen ist nicht. Bei Icecream / icecc ist ja an sich das arbeiten mit verschiedenen Archtikturen kein ding ( Linux-x86 und Linux-mips-bigendian).
Ein Problem war, das icecc Linux und FreeBSD Rechner unterscheiden können muss, da ist aber durch ein Paar quelltext modifikationen zu bewerkstelligen.
Nun das Problem um was es mir hier gehen soll:
Einen Cross-Compile Toolchain für FreeBSD 7 ( nur Compiler und assembler, libs, header und präprozessor werden nicht gebraucht)...
zu erste binutlis-2.15 mittels:
überstetzt.
Anschließend nach /usr/local/cross/include das /usr/include aus freebsd kopiert.
und nun gcc-4.2.1 mittels
konfiguriert aber nach einer weile bricht make ab:
Hat jemand so einen Cross-Compiler schon mal hinbekommen. Dass das ports-system mit icecc läuft hab ich schon getestet, und das scheint zu funktionieren.
MfG Grisu
Anmerkung: Icecream/Icecc: http://en.opensuse.org/Icecream (aufgebohrtes distcc)
ich versuche mir gerade einen Cross-Compiler einzurichten um unter Linux Binarys für FreeBSD zu compilieren. Der Grund ist der, dass ich mir einen alten Rechner für FreeBSD abgestellt habe ( 800Mhz P3 512MB RAM) und beim Compilieren auf der Ports gerne mittels icecc die anderen im Haushaltbefindlichen Rechner als Compile-Farm nutzen will. Problem an der Sache, die anderen 4 Rechner sind alles Linux-Rechner und mal eben so umstellen ist nicht. Bei Icecream / icecc ist ja an sich das arbeiten mit verschiedenen Archtikturen kein ding ( Linux-x86 und Linux-mips-bigendian).
Ein Problem war, das icecc Linux und FreeBSD Rechner unterscheiden können muss, da ist aber durch ein Paar quelltext modifikationen zu bewerkstelligen.
Nun das Problem um was es mir hier gehen soll:
Einen Cross-Compile Toolchain für FreeBSD 7 ( nur Compiler und assembler, libs, header und präprozessor werden nicht gebraucht)...
zu erste binutlis-2.15 mittels:
Code:
CC=gcc-3.4 ./configure --prefix=/usr/local/cross --target=i386-portbld-freebsd7.0
make && make install
Anschließend nach /usr/local/cross/include das /usr/include aus freebsd kopiert.
und nun gcc-4.2.1 mittels
Code:
./configure --prefix=/usr/local/cross/ --target=i386-portbld-freebsd7.0 --enable-languages=c,c++ --disable-shared
Code:
/home/grisu/Download/gcc-4.2.1/host-i686-pc-linux-gnu/gcc/xgcc -B/home/grisu/Download/gcc-4.2.1/host-i686-pc-linux-gnu/gcc/ -B/usr/local/cross//i386-portbld-freebsd7.0/bin/ -B/usr/local/cross//i386-portbld-freebsd7.0/lib/ -isystem /usr/local/cross//i386-portbld-freebsd7.0/include -isystem /usr/local/cross//i386-portbld-freebsd7.0/sys-include -O2 -O2 -g -O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -pthread -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1 -Wl,--version-script=libgcc/./libgcc.map -o ./libgcc_s.so.1.tmp libgcc/./_muldi3_s.o libgcc/./_negdi2_s.o libgcc/./_lshrdi3_s.o libgcc/./_ashldi3_s.o libgcc/./_ashrdi3_s.o libgcc/./_cmpdi2_s.o libgcc/./_ucmpdi2_s.o libgcc/./_clear_cache_s.o libgcc/./_enable_execute_stack_s.o libgcc/./_trampoline_s.o libgcc/./__main_s.o libgcc/./_absvsi2_s.o libgcc/./_absvdi2_s.o libgcc/./_addvsi3_s.o libgcc/./_addvdi3_s.o libgcc/./_subvsi3_s.o libgcc/./_subvdi3_s.o libgcc/./_mulvsi3_s.o libgcc/./_mulvdi3_s.o libgcc/./_negvsi2_s.o libgcc/./_negvdi2_s.o libgcc/./_ctors_s.o libgcc/./_ffssi2_s.o libgcc/./_ffsdi2_s.o libgcc/./_clz_s.o libgcc/./_clzsi2_s.o libgcc/./_clzdi2_s.o libgcc/./_ctzsi2_s.o libgcc/./_ctzdi2_s.o libgcc/./_popcount_tab_s.o libgcc/./_popcountsi2_s.o libgcc/./_popcountdi2_s.o libgcc/./_paritysi2_s.o libgcc/./_paritydi2_s.o libgcc/./_powisf2_s.o libgcc/./_powidf2_s.o libgcc/./_powixf2_s.o libgcc/./_powitf2_s.o libgcc/./_mulsc3_s.o libgcc/./_muldc3_s.o libgcc/./_mulxc3_s.o libgcc/./_multc3_s.o libgcc/./_divsc3_s.o libgcc/./_divdc3_s.o libgcc/./_divxc3_s.o libgcc/./_divtc3_s.o libgcc/./_fixunssfsi_s.o libgcc/./_fixunsdfsi_s.o libgcc/./_fixunsxfsi_s.o libgcc/./_fixsfdi_s.o libgcc/./_fixunssfdi_s.o libgcc/./_floatdisf_s.o libgcc/./_floatundisf_s.o libgcc/./_fixdfdi_s.o libgcc/./_fixunsdfdi_s.o libgcc/./_floatdidf_s.o libgcc/./_floatundidf_s.o libgcc/./_fixxfdi_s.o libgcc/./_fixunsxfdi_s.o libgcc/./_floatdixf_s.o libgcc/./_floatundixf_s.o libgcc/./_fixtfdi_s.o libgcc/./_fixunstfdi_s.o libgcc/./_floatditf_s.o libgcc/./_floatunditf_s.o libgcc/./_divdi3_s.o libgcc/./_moddi3_s.o libgcc/./_udivdi3_s.o libgcc/./_umoddi3_s.o libgcc/./_udiv_w_sdiv_s.o libgcc/./_udivmoddi4_s.o libgcc/./unwind-dw2_s.o libgcc/./unwind-dw2-fde_s.o libgcc/./unwind-sjlj_s.o libgcc/./gthr-gnat_s.o libgcc/./unwind-c_s.o -lc && rm -f ./libgcc_s.so && if [ -f ./libgcc_s.so.1 ]; then mv -f ./libgcc_s.so.1 ./libgcc_s.so.1.backup; else true; fi && mv ./libgcc_s.so.1.tmp ./libgcc_s.so.1 && ln -s libgcc_s.so.1 ./libgcc_s.so
/usr/local/cross//i386-portbld-freebsd7.0/bin/ld: crti.o: No such file: Datei oder Verzeichnis nicht gefunden
collect2: ld returned 1 exit status
make[3]: *** [libgcc_s.so] Fehler 1
make[3]: Leaving directory `/home/grisu/Download/gcc-4.2.1/host-i686-pc-linux-gnu/gcc'
make[2]: *** [libgcc.a] Fehler 2
make[2]: Leaving directory `/home/grisu/Download/gcc-4.2.1/host-i686-pc-linux-gnu/gcc'
make[1]: *** [all-gcc] Fehler 2
make[1]: Leaving directory `/home/grisu/Download/gcc-4.2.1'
make: *** [all] Fehler 2
Hat jemand so einen Cross-Compiler schon mal hinbekommen. Dass das ports-system mit icecc läuft hab ich schon getestet, und das scheint zu funktionieren.
MfG Grisu
Anmerkung: Icecream/Icecc: http://en.opensuse.org/Icecream (aufgebohrtes distcc)