Install
- texinfo
- gawk
- bison
- flex
Document
- binutils-2.23.tar.gz
- gcc-core-4.3.2.tar.bz2
- gcc-g++-4.3.2.tar.bz2
- mpfr-2.3.2.tar.bz2
- gmp-4.2.4.tar.bz2
- linux-2.6.28.tar.bz2
- glibc-ports-2.7.tar.bz2
- glibc-2.7.tar.bz2
Binutils-2.23
Download binutils-2.23.tar.gz (The lastest code) from internet.
mkdir cross_source
cd cross_source
tar xvf ../binutils-2.23.tar.gz
mkdir binutils-2.23_build
cd binutils-2.23_build
mkdir -vp /usr/local/arm/4.3.2
../binutils-2.23/configure --target=arm-linux --prefix=/usr/local/arm/4.3.2
Gcc-core-4.3.2.tar.bz2
Download gcc-core-4.3.2.tar.bz2 mpfr-2.3.2.tar.bz2 gmp-4.2.4.tar.bz2
tar xvf gcc-core-4.3.2.tar.bz2
cd gcc-core-4.3.2
tar xvf ../../mpfr-2.3.2.tar.bz2
tar xvf ../../gmp-4.2.4.tar.bz2
mv mpfr-2.3.2 mpfr
mv gmp-4.2.4 gmp
cd ../../ && mkdir gcc-core-4.3.2_build
cd gcc-core-4.3.2_build
../gcc-4.3.2/configure --target=arm-linux --prefix=/usr/local/arm/4.3.2 --disable-nls --disable-shared --disable-multilib --disable-decimal-float --disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath --disable-target-libiberty --disable-target-zlib --enable-languages=c --without-ppl --without-cloog
sudo make install
Linux-2.6.28
Download linux-2.6.28
cd linux-2.6.28
sudo apt-get install libncurses5-dev
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux- #wait for 1~2 minute, then crtl+c
Copy kernel header file to target
sudo cp -a include/linux /usr/local/arm/4.3.2/include/linux
sudo cp -a include/asm-arm /usr/local/arm/4.3.2/include/asm
sudo cp -a include/asm-generic /usr/local/arm/4.3.2/include/asm-generic
#Low version of kernel don't need to do the following step
sudo cp -a arch/arm/include/asm /usr/local/arm/4.3.2/include
sudo cp -a arch/arm/mach-s3c2410/include/mach /usr/local/arm/4.3.2/include/asm
Glibc-2.15.tar.gz
Dowaload glibc-2.15.tar.gz and glibc-ports-2.15.tar.gz ( include arm kernel package )
tar xvf glibc-2.15.tar.gz
tar xvf glibc-ports-2.15.tar.gz
mv -v tar xvf glibc-ports-2.15 glibc-2.15/ports
cd glibc-2.15
CC=arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux-ranlib ../glibc-2.15/configure --host=arm-linux --prefix=/usr/local/arm/4.3.2/arm-linux --with-tls --disable-profile --enable-add-ons --with-headers=/usr/local/arm/4.3.2/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_arm_tls=yes libc_cv_ctors_header=yes
Error+--------------------------------------------------+ checking whether to use .ctors/.dtors header and trailer... configure: error: missing __attribute__ ((constructor)) support??
+--------------------------------------------------+
Solution : libc_cv_ctors_header=yes
Error+--------------------------------------------------+../ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S:30: Error: previous CFI entry not closed (missing .cfi_endproc)
/tmp/cc9oYU9g.s: Error: open CFI at the end of file; missing .cfi_endproc directive
+--------------------------------------------------+
Solution :
geany glibc-2.15/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S Find ENTRY(__default_sa_restorer), add END(__default_sa_restorer) under it.
Find ENTRY(__default_rt_sa_restorer), add END(__default_rt_sa_restorer) under it.
Error+--------------------------------------------------+../sysdeps/unix/syscall-template.S:82: Error: CFI instruction used without previous .cfi_startproc+--------------------------------------------------+
Solution :
geany ../glibc-2.14/sysdeps/unix/syscall-template.S
#define T_PSEUDO(SYMBOL, NAME, N) PSEUDO (SYMBOL, NAME, N)
Add following definition above the last one.
#define PSEUDO(name, syscall_name, args) \
.text; \
ENTRY (name); \
DO_CALL (syscall_name, args); \
cmn r0, $4096;
Reference :
我的arm-gcc工具编译安装过程
[转载]arm-linux-gcc 4.3.2编译安装过程
在Ubuntu10.04中建树ARM交叉编译景象
Cross-compiling
0 意見:
張貼留言