首先,对于编译器这东西,我一向认为很高深,当然现在还是这么认为,呵,所以呢,一般都是用别人编译好的现成的编译好版本。可是最近因为要在windows下面编译u-boot的原因,因为找不到合适的arm编译器,故只能自己编译一个了。下面就是整个的编译过程,一步步来吧。
在开始之前,还要说明一点,这里所编译的gnu arm gcc
arm gcc吧。
1.
(1)类型:arm-none-eabi-gcc
(2)版本:Binutils-2.22,Newlib-1.20.0,GCC-4.7.1,GDB-7.4.1,insight-6.8.1
嘿嘿,这个版本的问题,我参考了yagarto
+ 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来获得:
GCC-4.7.1:
GDB-7.4.1:
官网:http://www.gnu.org/software/gdb/
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)
gcc
Cygwin下载请到http://www.cygwin.com/
(2)
首先,建一个用来存入编译好的编译器的目录,建义在cygwin安装目录下建一下opt目录,里面建一个arm-gnu-tools目录,比如我的cygwin是装在:d:\cygwin,那么我就建d:\cygwin\opt\arm-gnu-tools,这样你就可以在cygwin下通过
其次,再建一个目录build-arm-tools,然后在建立build-binutils,
build-gcc, build-gdb, build-newlib,
E:\build-arm-tools
│
│
│
│
│
│
│
├─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
其中build_arm_tools.bat是我们要进行编译要用到的脚本,主要作用是设置一些环境变量,启动cygwin环境,具体内容如下:
@echo off
set PREFIX=/opt/arm-gnu-tools
set BIN_PATH=/opt/arm-gnu-tools/bin
set CYGWIN_DIR=d:\cygwin
set PATH=%CYGWIN_DIR%\bin;%PATH%
set HOME=e:\build-arm-tools\
(3)
这部分内容的话,我是参考了yagarto, GNUARM, WinARM, devkitARM, SysGcc_ARM等,CodeSourcery和Linaro是基于linux库的,所以无可比性,最后觉得yagarto的参数最好的,然后又在它的基础上加了几个,具体的如下:
--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