近两周来,下班之后一有空就搞这个事,昨晚终于弄完了。

   crosstool-NG官网:http://crosstool-ng.org/

   开始是准备在cygwin上做的,官网说得含糊,大概是说基本支持得挺好,又说会有一些怪事发生(There still are quirks to work around)。先不信这个邪,因为在cygwin上编译过ecos,都挺顺的。但是真的出现一些错误,把cygwin都重装了两遍了,所有开发工具都选上,最后还是失败告终。

   于是决定装ubuntu,下载的是12.04.2的版本。也不想用vmware来搞了,以前自己从来没把vmware弄好过,在samba这里失败,一直配不好,后来还是直接用了公司已经配好的用。现在又不玩游戏了,用电脑就是看电影上网写东西这类事情,ubuntu都可以干得很好,差不多可以替代windows。装个双系统,平时就都用ubuntu得了,万不得已才进win 7。

   把e盘分了20G出来用来装ubuntu。以前一装系统就要刻光盘,其实用UltraISO就可以把操作系统镜象弄到U盘里去,BIOS设成从U盘启动,安装过程就跟用光驱动安装是一样的了。

   安装好傻瓜,有个选项选了windows与ubuntu共存之后,连分区都不用选了,装完重启就可以选是进ubuntu还是进win 7了。

   按照crosstool-NG官网的说明一步步进行:

wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-VERSION.tar.bz2
tar xjf crosstool-ng-VERSION.tar.bz2
cd crosstool-ng-VERSION
./configure --prefix=/some/place
make
make install
export PATH="${PATH}:/some/place/bin"

这中间碰到了好多问题,在网上搜索一一解决,列表如下

没有bison :

   sudo apt-get install bison flex


没有gperf :

   sudo apt-get install gperf


没有*info,这里忘了具体是什么错误,最后四个字母是info :

   sudo apt-get install texinfo


没有GNU awk:

   sudo apt-get install gawk


没有libtool:

   sudo apt-get install libtool


没有automake:

   sudo apt-get install automake


没有curses header:
   sudo apt-get install libncurses5-dev


在make install时候,提示不能是root用户。因为我把./configure --prefix=/some/place设成了在/etc里,普通用户无权限,就用root用户。这个地方卡了两天,在网上相关的东西少。后来我把/some/place改成自己的home目录下,就正常了。


ubuntu12.04.2的普通用户PATH在HOME目录下的.profile里更改,免得每次打开终端都要用export



mkdir /a/directory/to/build/your/toolchain
cd /a/directory/to/build/your/toolchain
ct-ng arm-unknown-linux-gnueabi
ct-ng build


这个过程也有一些问题要解决


Missing: 'i686-pc-linux-gnu-gcj' or 'i686-pc-linux-gnu-gcj' or 'gcj' : either needed!
用sudo apt-get install gcj,说已安装,换了几个源,也还是不行,后来
解决:sudo apt-get install gcj-jdk

Missing: 'i686-pc-linux-gnu-g++' or 'i686-pc-linux-gnu-g++' or 'g++' : either needed!
解决:sudo apt-get install g++

在Retrieving 'linux-3.7.3'的地方卡了挺久,开始以为是又缺哪个,试了几种方法都不行,想到这里说在获取,可能是在网上下载吧,比较慢一点,就去健身房了让它一直在运行,后来回来时这一步已经装好了。

装到第92分钟时,装cross-gdb,出现[ERROR]    
configure: error: expat is missing or unusable
[ERROR]    make[2]: *** [configure-gdb] Error 1
[ERROR]    make[1]: *** [all] Error 2
解决:sudo apt-get install libexpat1-dev  

ct-ng build的过程花了两三个小时,最后装好。按下面的路径修改PATH,就可以正常用了


export PATH="${PATH}:${HOME}/x-tools/arm-unknown-linux-gnueabi/bin"
arm-unknown-linux-gnueabi-gcc