2013年10月31日 星期四

[arm][gcc][embedded system] arm-linux-gcc 4.3.2 on Ubuntu 10.04

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

Related Posts:

0 意見:

張貼留言