免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2613 | 回复: 0
打印 上一主题 下一主题

build arm-linux toolchain & arm-linux-gcc工具链下载 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-06 18:42 |只看该作者 |倒序浏览

http://ftp.snapgear.org:9981/pub/snapgear/tools/arm-linux/

HOWTO build arm-linux toolchain for ARM/XSCALE
----------------------------------------------
These instructions document how to build an arm-linux tool chain
that contains both little-endian and big-endian target libraries.
1. Packages used:
    binutils-2.17.tar.gz
    gcc-4.2.1.tar.gz
    glibc-2.3.6.tar.gz
    glibc-linuxthreads-2.3.6.tar.gz
    elf2flt-20060708.tar.gz
2. binutils-2.17
   tar xvzf binutils-2.17.tar.gz
   cd binutils-2.17
   mkdir arm-linux
   cd arm-linux
   ../configure --target=arm-linux --with-lib-path=/usr/local/arm-linux/lib:/usr/local/arm-linux/lib/be:/usr/local/arm-linux/lib/soft-float:/usr/local/arm-linux/lib/be/soft-float
   make
   make install
   chmod 777 /usr/local/arm-linux
3. gcc-4.2.1
   tar xvjf gcc-4.2.1.tar.bz2
   cd gcc-4.2.1
   cp $(ATTACHED t-linux file) gcc/config/arm/
   vi gcc/config/arm/linux-elf.h
     -- remove line that defines LIBGCC_SPEC
   vi gcc/config/arm/lib1funcs.asm
     -- change line 999 which are:
        mov     r0, #SIGFPE
        bl      SYM(raise) __PLT__
     to be:
        bl      SYM (__div0) __PLT__
        mov     r0, #0                  @ About as wrong as it could be.
   mkdir arm-linux
   cd arm-linux
   ../configure --target=arm-linux --disable-shared --disable-threads \
--disable-libmudflap --disable-libssp \
--with-headers=linux-2.6.x/include \
--prefix=/usr/local --with-gnu-as --with-gnu-ld --enable-multilib \
--enable-languages=c
   make
   [ ignore build failure, move to next step! ]
   make install
4. glibc-2.3.6 (big-endian)
   tar xvzf glibc-2.3.6.tar.gz
   cd glibc-2.3.6
   tar xvzf glibc-linuxthreads-2.3.6.tar.gz
   rm -rf nptl
   vi sysdeps/unix/sysv/linux/arm/ioperm.c
      - change "BUS_ISA" to be "CTL_BUS_ISA" lines 103 and 104
   vi config.make.in
      - change "slibdir = @...@" to "slibdir = @libdir@"
   vi Makeconfig
      - remove any usage occurrances of -lgcc_eh
   vi sysdeps/unix/sysv/linux/bind.S
      - comment out line 5 "weak_alias (bind, __bind)"
   vi sysdeps/unix/sysv/linux/getsockname.S
      - comment out line 5 "weak_alias (getsockname, __getsockname)"
   vi sysdeps/unix/sysv/linux/listen.S
      - comment out line 5 "weak_alias (listen, __listen)"
   vi sysdeps/unix/sysv/linux/setsockopt.S
      - comment out line 5 "weak_alias (setsockopt, __setsockopt)"
   vi sysdeps/arm/dl-machine.h
      - line 360, remove "static" before function fix_bad_pc24
   mkdir arm-linux
   cd arm-linux
   CC="arm-linux-gcc -mbig-endian" \
   AS="arm-linux-as -mbig-endian" \
   LD="arm-linux-ld -EB" \
   ../configure --host=arm-linux --build=i686-pc-linux-gnu \
--with-headers=linux-2.6.x/include \
--enable-add-ons --enable-shared --prefix=/usr/local/arm-linux \
--libdir=/usr/local/arm-linux/lib/be
   make
   make install
5. glibc-2.3.6 (little-endian)
   tar xvzf glibc-2.3.6.tar.gz
   cd glibc-2.3.6
   tar xvzf glibc-linuxthreads-2.3.6.tar.gz
   [ Apply same fixes as above ]
   mkdir arm-linux
   cd arm-linux
   CC="arm-linux-gcc" \
   AS="arm-linux-as" \
   LD="arm-linux-ld" \
   ../configure --host=arm-linux --build=i686-pc-linux-gnu \
--with-headers=linux-2.6.x/include \
--enable-add-ons --enable-shared --prefix=/usr/local/arm-linux
   make
   make install
6. glibc-2.3.6 (big-endian/soft-float)
   tar xvzf glibc-2.3.6.tar.gz
   cd glibc-2.3.6
   tar xvzf glibc-linuxthreads-2.3.6.tar.gz
   [ Apply same fixes as above ]
   mkdir arm-linux
   cd arm-linux
   CC="arm-linux-gcc -mbig-endian -msoft-float" \
   AS="arm-linux-as -mbig-endian" \
   LD="arm-linux-ld -EB" \
   ../configure --host=arm-linux --build=i686-pc-linux-gnu \
--with-headers=linux-2.6.x/include \
--enable-add-ons --enable-shared --prefix=/usr/local/arm-linux \
--without-fp --libdir=/usr/local/arm-linux/lib/be/soft-float
   make
   make install
7. glibc-2.3.6 (little-endian/soft-float)
   tar xvzf glibc-2.3.6.tar.gz
   cd glibc-2.3.6
   tar xvzf glibc-linuxthreads-2.3.6.tar.gz
   [ Apply same fixes as above ]
   mkdir arm-linux
   cd arm-linux
   CC="arm-linux-gcc -msoft-float" \
   AS="arm-linux-as" \
   LD="arm-linux-ld" \
   ../configure --host=arm-linux --build=i686-pc-linux-gnu \
--with-headers=linux-2.6.x/include \
--enable-add-ons --enable-shared --prefix=/usr/local/arm-linux \
--without-fp --libdir=/usr/local/arm-linux/lib/soft-float
   make
   make install
8. gcc-4.2.1 (c++, etc)
   tar xvzf gcc-4.2.1.tar.gz
   cd gcc-4.2.1
   cp $(ATTACHED t-linux file) gcc/config/arm/
   vi gcc/config/arm/t-linux  
      - remove all "-Dinhibit_libc" occruances
   vi gcc/config/arm/linux-elf.h
     -- remove line that defines LIBGCC_SPEC
   vi gcc/config/arm/lib1funcs.asm
     -- change line 999 which are:
        mov     r0, #SIGFPE
        bl      SYM(raise) __PLT__
     to be:
        bl      SYM (__div0) __PLT__
        mov     r0, #0                  @ About as wrong as it could be.
   perl -pi -e 's/int namelen/unsigned int namelen/' libjava/java/net/natInetAddressPosix.cc
   mkdir arm-linux
   cd arm-linux
   ../configure --target=arm-linux --disable-shared \
--prefix=/usr/local --with-headers=linux-2.6.x/include \
--with-gnu-as --with-gnu-ld --enable-multilib
   make
   make install
9. elf2flt
   tar xvzf elf2flt-20060708.tar.gz
   ./configure --target=arm-linux \
--with-libbfd=/binutils-2.17/arm-linux/bfd/libbfd.a \
--with-libiberty=/binutils-2.17/arm-linux/libiberty/libiberty.a \
--with-bfd-include-dir=/binutils-2.17/arm-linux/bfd
   make
   make install
10. packaging
   cd /
   find /usr/local/arm-linux -name CVS -type d | xargs rm -rf
   strip /usr/local/arm-linux/bin/*
   strip /usr/local/bin/arm-linux-*
   strip /usr/local/libexec/gcc/arm-linux/4.2.1/*
   tar cvzf /tmp/arm-linux-tools-xxxxxxxx.tar.gz
/usr/local/arm-linux \
/usr/local/lib/gcc/arm-linux \
/usr/local/libexec/gcc/arm-linux \
/usr/local/bin/arm-linux-* \
/usr/local/bin/genext2fs
------------------------------------------------------------------------------
APPENDIX A  --  modified t-linux for gcc-4.2.1
------------------------------------------------------------------------------
# Just for these, we omit the frame pointer since it makes such a big
# difference.  It is then pointless adding debugging.
TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D__gthr_posix
LIBGCC2_DEBUG_CFLAGS = -g0
# Don't build enquire
ENQUIRE=
LIB1ASMSRC = arm/lib1funcs.asm
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
_bb_init_func _call_via_rX _interwork_call_via_rX \
_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
_fixsfsi _fixunssfsi
MULTILIB_OPTIONS = mlittle-endian/mbig-endian mhard-float/msoft-float
MULTILIB_DIRNAMES = le be hard-float soft-float
EXTRA_MULTILIB_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crti.o crtn.o crtbeginT.o
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h
# Assemble startup files.
$(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
   -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm
$(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
   -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm
------------------------------------------------------------------------------
arm-linux-gcc工具链下载13665101072
2009-6-16 13:11:05   
收藏
  |  
打印
  |
投票(1)
  |  
评论(0)
  |  阅读(4914)  ◇字体:[






http://www.handhelds.org/download/projects/toolchain/
http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/
http://so.hustonline.net/list.aspx?word=arm-linux-gcc-4.1.2&schoolInput=%CB%F9%D3%D0%D1%A7%D0%A3&schoolId=0&level=0

http://ftp.snapgear.org:9981/pub/snapgear/tools/arm-linux/
    3.4.1
最 常用的编译版本是arm-linux-gcc-3.4.1 和 arm-linux-3.3.2 的,现在的嵌入式开发基本上用的是这些,3.4.1的用于编译2.6的内核,而3.3.2的常用于编译busybox,和bootloader(u- boot),编译的版本配合不好的话就会出错,所以要选择好编译版本,如果这个版本不行的话,可以试试其他的版本,在uclinux上用的多的就是 arm-elf-tools-20030314
http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2
http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2
如 果系统中又装了3.4.1和3.3.2的版本的话,可以在 .bashrc 中通过设置PATH来指定默认的版本为GCC3.4.1,然后再打开一个新的终端就可以用了,如果需要使用3.3.2的话,可以用具体的路径指定 (/usr/local/arm/3.3.2/bin/arm-linux-)。
在~/.bashrc最后加入:   export PATH=$PATH:/usr/local/arm/3.4.1/bin   

如果编译u-boot或者busybox的时候指定3.3.2的版本:
CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux-
3.4.1的就直接用arm-linux-就可以了。
arm-linux-gcc-4.2.1的版本在
http://ftp.snapgear.org:9981/pub/snapgear/tools/arm-linux/
这里可以下载,
arm-linux-tools-20070808.tar.gz
这个可能是4.2.1的版本,因为下面有编译4.2.1的方法还有相应的代码包,
build-arm-linux-4.2.1
,此版本由于过大,我没有下载。
下面的这个是ARM官方给的下载链接4.2.1的
http://www.codesourcery.com/gnu_toolchains/arm/download.html
,然后将HOST选择为IA32 GNU/Linux,点击下载就可以了。不过前缀为arm-none-eabi-而不是arm-linux-有点郁闷。
自 己编译一个交叉编译环境是个很艰难的过程,有些软件又依赖不同的版本,所以自己维护一个是相当费时费力伤脑筋的过程,关于arm-linux- toolchain,arm-elf-toochain的区别,主要是编译过程中所用的C库的不同,arm-linux用的是glibc,arm-elf 用的是newlibc,ulibc等,具体的可以去网上搜集,一般编译arm+linux的用arm-linux-,而编译uclinux则用arm- elf-
这是我在网上找到的一些下载交叉编译环境的网站
0.http://ftp.arm.linux.org.uk/pub/armlinux/toolchain
[   ] cross-2.95.3.tar.bz2            20-Jul-2001 21:12   35M
[   ] cross-3.0.tar.bz2               20-Jul-2001 22:27   39M
[   ] cross-3.2.tar.bz2               23-Aug-2002 11:04   81M
[   ] cross-3.2.tar.gz                23-Aug-2002 10:01   93M
1.http://opensrc.sec.samsung.com/download.html      
GCC 3.4.0 based :
arm-uclinux-tools-base-gcc3.4.0-20040713.sh (binutil-2.15 based)
arm-uclinux-tools-c++-gcc3.4.0-20040713.sh
arm-uclinux-tools-gdb-20040713.sh      
GCC 2.95.3 based :
arm-elf-tools-20040427.sh by Hyok, Apr 27, 2004. (binutil-2.14/linux-2.6.5 based)
arm-elf-tools-20040305.sh by Hyok, Mar 5, 2004. (binutil-2.14 based)
   
2.http://www.handhelds.org/download/projects/toolchain/
[ ]arm-linux-gcc-3.3.2.tar.bz2                   03-Nov-2003 10:23   71M  
[ ]arm-linux-gcc-3.4.1.tar.bz2                   29-Jul-2004 14:01   41M

3.http://linux.omap.com/pub/toolchain/
[   ]obsolete-gcc-3.3.2.tar.bz2        15-May-2004 12:18   76M
4.http://ftp.snapgear.org:9981/pub/snapgear/tools/arm-linux/
5.http://www.uclinux.org/pub/uClinux/arm-elf-tools/
6.http://www.w-ww.org/~rmoravcik/sbc2410/toolchains/arm-linux-gcc-4.1.2-moko.

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/90973/showart_1987764.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP