现在的位置: 首页 > 综合 > 正文

一步一步教你怎么编译GNU ARM GCC 交叉编译器 arm-none-eabi-gcc

2013年09月22日 ⁄ 综合 ⁄ 共 3078字 ⁄ 字号 评论关闭

首先,对于编译器这东西,我一向认为很高深,当然现在还是这么认为,呵,所以呢,一般都是用别人编译好的现成的编译好版本。可是最近因为要在windows下面编译u-boot的原因,因为找不到合适的arm编译器,故只能自己编译一个了。下面就是整个的编译过程,一步步来吧。

在开始之前,还要说明一点,这里所编译的gnu arm gcc 编译器,运行时是依赖于cygwin的,而且这也是我所需要的,至于为什么,请看我的另一篇:如何实现在windows下面编译u-boot里面已经说了详细的原因。如果你不想依赖于cygwin,那请直接用yagarto,或其他的windows版本的gnu
arm gcc
吧。

 

1.       确定要编译arm编译器的类型和版本,下载合适的编译器源文件和库源文件

1)类型:arm-none-eabi-gcc

2)版本:Binutils-2.22Newlib-1.20.0GCC-4.7.1GDB-7.4.1insight-6.8.1

嘿嘿,这个版本的问题,我参考了yagarto 还有一些其他的版本,yagarto Eclipse
+ CDT
作为代码编辑和调试的前端,所有没有编insight-6.8.1,我这时是编了,如果你不需要用insight来作为调试的前端,你也不用编,只编前面四个就可以了。

3)下载所要的源文件:

Binutils-2.22

官网:http://www.gnu.org/software/binutils/

下载地址:http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2

Newlib-1.20.0

官网:http://sourceware.org/newlib/

下载地址:http://nchc.dl.sourceforge.net/project/devkitpro/sources/newlib/newlib-1.20.0.tar.gz

也可以通过CVS来获得:

  cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src login

  {enter "anoncvs" as the password}

  cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src co newlib

GCC-4.7.1

官网:http://gcc.gnu.org/

  下载地址:http://www.netgull.com/gcc/releases/gcc-4.7.1/gcc-4.7.1.tar.bz2

GDB-7.4.1

官网:http://www.gnu.org/software/gdb/

  下载地址:http://ftp.gnu.org/gnu/gdb/gdb-7.4.1.tar.bz2

insight-6.8.1

官网:http://sourceware.org/insight/

下载地址:ftp://sourceware.org/pub/insight/releases/insight-6.8-1.tar.bz2

也可以通过CVS来获得:

cvs -z9 -d :pserver:anoncvs@sourceware.org:/cvs/src login

[enter "anoncvs" as the password]

cvs -z9 -d :pserver:anoncvs@sourceware.org:/cvs/src co -r gdb_6_8-branch insight

官网不变,下载地址这里只是给出参考,感觉随时会变,那时候就google或百度。

 

2.       编译前的准备

编译之前还要做几件事:

(1)       准备好cygwin,并且装好所需要的Mingw
gcc
 等软件,主要是devel选项下的。

Cygwin下载请到http://www.cygwin.com/  这里我用的是cygwin-1.7.15-1的版本,目前最新版cygwin-1.7.16-1 ,差别不大。装好后,编译的时候如果提示要装什么,可以再装,如果你的空间够,把devel下全装了也行。

(2)       建好编译时所要的目录:

首先,建一个用来存入编译好的编译器的目录,建义在cygwin安装目录下建一下opt目录,里面建一个arm-gnu-tools目录,比如我的cygwin是装在:d:\cygwin,那么我就建d:\cygwin\opt\arm-gnu-tools,这样你就可以在cygwin下通过 /opt/arm-gnu-tools来访问了

其次,再建一个目录build-arm-tools,然后在建立build-binutils,
build-gcc, build-gdb, build-newlib,
 并且拷入源文件,解压缩。下面就是我建好目录结构:

E:\build-arm-tools

  binutils-2.22.tar.bz2

  build_arm_tools.bat

  gcc-4.7.1.tar.bz2

  gdb-7.4.1.tar.bz2

  insight-6.8-1.tar.bz2

  newlib-1.20.0.tar.gz

 

├─build-binutils

├─build-gcc

├─build-gdb

├─build-insight

├─build-newlib

├─binutils-2.22

├─gcc-4.7.1

├─gdb-7.4.1

├─insight-6.8-1

└─newlib-1.20.0

一步一步教你怎么编译GNU <wbr>ARM <wbr>GCC <wbr>交叉编译器 <wbr>arm-none-eabi-gcc

其中build_arm_tools.bat是我们要进行编译要用到的脚本,主要作用是设置一些环境变量,启动cygwin环境,具体内容如下:

@echo off

 set TARGET=arm-none-eabi

set PREFIX=/opt/arm-gnu-tools

set BIN_PATH=/opt/arm-gnu-tools/bin

 set LANG=C.UTF-8

set CYGWIN_DIR=d:\cygwin

set PATH=%CYGWIN_DIR%\bin;%PATH%

set HOME=e:\build-arm-tools\

 bash --login –i

  双击启动后显示:

一步一步教你怎么编译GNU <wbr>ARM <wbr>GCC <wbr>交叉编译器 <wbr>arm-none-eabi-gcc

(3)       确定编译参数

这部分内容的话,我是参考了yagarto, GNUARM, WinARM, devkitARM, SysGcc_ARM等,CodeSourceryLinaro是基于linux库的,所以无可比性,最后觉得yagarto的参数最好的,然后又在它的基础上加了几个,具体的如下:

 --target=arm-none-eabi

--prefix=/opt/arm-gnu-tools

--disable-nls

--disable-threads 

--enable-languages=c,c++

--enable-interwork

--with-gcc

--with-gnu-ld

--with-gnu-as

--with-dwarf2

--with-float=soft

--disable-shared

--with-newlib

--enable-multilib

--disable-libssp

--disable-libstdcxx-pch

--disable-libmudflap

--disable-libgomp –v

--with-headers=../newlib-1.20.0/newlib/libc/include

抱歉!评论已关闭.