近两周来,下班之后一有空就搞这个事,昨晚终于弄完了。
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