Una publicación similar (menos descriptiva) es here.Building ARM compilador cruzado GNU
Estoy tratando de hacer rodar mi propia cadena de herramientas usando lanzamientos recientes en Ubuntu y esperaba que hubiera suficiente comunidad Linux aquí que pudiera obtener consejos específicos sobre ciertos problemas a medida que surgen.
Con la ayuda de todos, me gustaría ver que este se convierta finalmente en una referencia útil.
En primer lugar, "Crosstool" al que casi todo el mundo se refiere es un poco (2006) desactualizado y "Crosstool-NG" que parece estar cargando con la antorcha en mi máquina. Prefiero depurar el proceso en sí mismo que un script (lo que parece requerir que entienda el proceso).
A continuación se muestran los pasos básicos de lo que he estado trabajando hasta ahora; en este momento estoy atascado tratando de compilar el primer pase GCC.
Dónde está fallando ...
está fallando porque la cruz compilada biblioteca que contiene "crti.o" desaparece:
# ./gcc-4.4.1/configure --target=arm-linux --disable-thread --enable-langauges=c
/bin/bash ../../../gcc-4.4.1/libgcc/../mkinstalldirs .
/usr/src/gnu-4.4.1-build/./gcc/xgcc -B ........
/usr/local/arm-linux/bin/ld: crti.o No such file: No such file or directory
collect2: ld returned 1 exit status
make[2]: *** [libgcc_s.so] Error 1
make[2]: Leaving directory `/usr/src/gnu/gcc-4.4.1-build/arm-linux/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `/usr/src/gnu/gcc-4.4.1-build'
make: *** [all] Error 2
etapas de la generación
En una instalación "recién configurada" de Ubuntu 9.04, aquí están los pasos que he hecho hasta ahora:
#New configuration of Ubuntu 9.04
sudo updatedb
sudo apt-get install build-essential subversion
# For kernel configuration
sudo apt-get install libncurses5-dev
# For building GCC
sudo apt-get install libgmp3-dev libmpfr-dev
#Get Linux Headers for GCC/GLIBC compilations
# I use a hacked Linux from Artilla,
pushd ~ && svn co http://.../linux m501-linux && cd !$
make ARCH=arm m501_defconfig
make ARCH=arm menuconfig
sudo mkdir /usr/local/arm-linux/include
sudo cp -dR include/asm-arm /usr/local/arm-linux/include/asm
sudo cp -dR include/linux /usr/local/arm-linux/include/linux
cd /usr/local/arm-linux/
sudo ln -s include sys-include
popd
#Get sources:
cd /usr/src/
sudo su root
mkdir gnu
ftp ftp.gnu.org
# get gnu/binutils/binutils-2.19.1.tar.bz2
# get gnu/gcc/gcc-4.4.1/gcc-4.4.1.tar.bz2
# get gnu/glibc/glibc-2.10.1.tar.bz2
# get gnu/gdb/gdb-6.8.tar.bz2
#Build Binutils
bzcat binutils-2.19.1.tar.bz2 | tar -xv
mkdir binutils-2.19.1-build && cd !$
cp ../binutils-2.19.1/gas/config/tc-arm.c ./tc-arm.c
sed -r 's/(as_bad[ \t]*\()(.+\[.+\]\))/\1\"%s\",\2/' < ./tc-arm.c > ../binutils-2.19.1/gas/config/tc-arm.c
rm ./tc-arm.c
../binutils-2.19.1/configure --target=arm-linux
make && make install && cd ..
#Build GCC
bzcat gcc-4.4.1.tar.bz2 | tar -xv
mkdir gcc-4.4.1-build && cd !$
../gcc-4.4.1/configure --target=arm-linux --disable-thread --enable-langauges=c -with-headers=/usr/local/arm-linux/include
make
Pingüinos, pingüinos ... ¡a todos lados! :) –
Lo siento, he leído mal tu pregunta, supuse que sabías que la libc correcta estaría presente en el host de destino ... y que solo estabas compilando en una arquitectura extranjera. Bueno, al menos, ahora tienes una cadena de herramientas ARM en funcionamiento :) –