Linux系统:Fedora8(2.6.23版本的内核)
Linux localhost.localdomain 2.6.23.1-42.fc8 #1 SMP Tue Oct 30 13:55:12 EDT 2007 i686 i686 i386 GNU/Linux
一、手动安装termcap
#tar zxvf termcap-1.3.1.tar.gz
#cd termcap-1.3.1
#sudo ./configure prefix=/usr
#sudo make
#sudo make install
二、准备crosstool-ng的安装环境(建议在第五步编译的过程中,根据错误提示来安装相应版本的工具。)
bison
flex
texinfo
automake
libtool
patch
gcc-java(原名叫gcj手动安装)
cvs
cvsd(手动安装)
gawk
glibc-static(手动安装)
在Fedora下,可使用命令 $ yum install xxx 依次安装。
PS:手动安装,就是自己去下载安装包,然后按照termcap的安装方法安装就可以了。有些工具没有yum源,所以需要自己手动安装。
三、下载解压crosstool-ng-1.9.3、打补丁(如果有)并建立工作目录
将下载下来的crosstool-ng-1.9.3.tar.bz2解压到你为她准备的工作目录,并建立安装和编译目录。
#tar xjvf crosstool-ng-1.9.3.tar.bz2 -C /work/crosstool-ng-1.9.3
# cd ../ #进入上级目录
#mkdir crosstool-ng-1.9.3_build #这是编译新交叉编译器的工作目录
#mkdir crosstool-ng-1.9.3_install #这是crosstool-ng的安装目录
#cd crosstool-ng-1.9.3 #进入解压后的 crosstool-ng-1.9.3目录
#patch -p1 < 补丁文件 #如果有补丁,打补丁
#./configure --prefix=/work/crosstool-ng-1.9.3_install #配置crosstool-ng
#sudo make #编译crosstool-ng
#sudo make install #安装crosstool-ng
# echo "PATH=$PATH:/work/crosstool-ng-1.9.3_install/bin" >> ~/.bashrc #为后面调用ct-ng命令增加环境变量
# source ~/.bashrc #环境变量立即生效
# ct-ng help
四、配置交叉编译工具链
$ cd ~ #root用户根目录
$mkdirdevelopment
$ cd development
$ mkdir src # 建立保存源码包目录
$ mkdir x-tools # 建立交叉编译器的安装路径
$cd /work/crosstool-ng-1.9.3_build/
$ cp /work/crosstool-ng-1.9.3/samples/arm-unknown-linux-gnueabi/crosstool.config .config #拷贝默认配置文件
$ ct-ng menuconfig
此时会出现crosstool-ng的配置窗口,针对armv4t体系架构,开始对其进行修改配置:
1、已下载好的源码包路径和交叉编译器的安装路径。
Paths and misc options --->
(${HOME}/development/src) Local tarballs directory #保存源码包路径HOME代表当前用户目录,/home/xxx,我使用的root目录,所以HOME目录代表~。
(${HOME}/development/x-tools/${CT_TARGET}) Prefix directory #交叉编译器的安装路径
2、修改交叉编译器针对的构架
Target options --->
*** Target optimisations ***
(armv4t) Architecture level
(arm9tdmi) Emit assembly for CPU
(arm920t) Tune for CPU
通过查找资料,这个应该是指令集的架构,对于S3C2410/S3C2440,都是ARM920T的核心,架构指令是armv4t,所以,如果要编译2410/2440的,就选armv4t。以此类推S3C6410 ARM1176JZF-S核心 使用的是armv6架构,就选armv6,那么具体都支持哪些架构呢?可以用man gcc来查询,搜索arm,再搜索-march=就可以找到本gcc支持的处理器核心列表了。
3、增加编译时的并行进程数,以增加运行效率,加快编译。
Paths and misc options --->
*** Build behavior ***
(4) Number of parallel jobs
这个数值不宜过大,应该为CPU数量的两倍。由于我的CPU是双核的,所以我填了4.
4、一些个性化的修改(可以不修改)
Toolchain options --->
*** Tuple completion and aliasing ***
(s3c2440) Tuple's vendor string
这样产生的编译器前缀就是:arm-s3c2440-linux-gnueabi-
5、C compiler --->(可以不修改)
(crosstool-NG-${CT_VERSION}-s3c2440) gcc ID string
以上红色字体部分即为修改之处。
五、编译工具链
配置完后,在crosstool-ng-1.9.3_build目录下执行命令:$ ct-ng build.4。
接下来,就是漫长的等待。crosstool-ng会自动下载相应的包,内核文件,然后解压,配置,编译,链接。
如果下载某些包出错的话,请手动下载对应版本,并把包移动到/work/crosstool-ng-1.9.3_build/targets/tarballs文件夹中。
对啦,这些下载好的软件包应该放到哪呢?放到crosstool-ng-1.9.3_build目录下的targets/tarballs文件夹中。
六、增加环境变量
$ echo "PATH=${PATH}:${HOME}/development/x-tools/arm-s3c2440-linux-gnueabi/bin" >>/etc/profile。#增加环境变量
$ source /etc/profile #生效环境变量
$ arm-s3c2440-linux-gnueabi-gcc
arm-s3c2440-linux-gnueabi-cc: no input files
//测试命令OK
大家如果遇到问题无法解决,可以去看这个http://www.crifan.com/files/doc/docbook/crosstool_ng/release/htmls/crosstool_ng_features.html网站的第五章的详细介绍。