建立arm-linux交叉工具链 crosstool-ng测试环境:ubuntu 10.4,10.10,11.4,11.10均无压力。最近被这个arm-linux交叉编译器搞了5天,都快被崩溃了。终于成功了,好开心,于是再做一遍,没问题,在这里记录以下流程:1.确定好自己机子于开发板tool:crosstool-ng1.93host:ubuntu 10.04.3.LTStarget:S3Carm9(前3天我一直用fedora来安装,最后真的不行了,于是换成ubutu,现在知道编译过程与主机上的GCC版本和GDB版本以及BINUTILS版本其实是没有关系的。它提示你ld is too old ,是因为你下载的工具的版本不对,清自己核对自己下载的版本跟下面提到的vim .config里面的规定。)
2.$sudo passwd -l (设置root密码set the unix password:reset the unix password:scuess!(切换到root用户下,安装相关工具。以下所有操作都在root用户下,以后编译前请su -l ,切换到root下面才编译)
3.下载这些工具包,通常有error的时候,很多是因为下面安装包不完全,如果下面安装包有找不到的,那么可能你的ubutu版本对不上,或者你的ubutu版本出现了点小错误(我有一天晚上就是因为cvsd找不到,然后不管了,照样安装,,导致10多分钟后才提示gcc编译不过,然后从新下载)apt-get install bison flex texinfo automake libtool cvs patch
apt-get install libncurses5*
apt-get install aria2 curl gcj g++ subversion cvsd gawk
apt-get install glibc*4.下载安装用到的工具包:(请千万要下完整!特别是那个gcc,我之前的gcc原来下了一半然后中断了,只有26M,就直接拿来用了,一直找不到问题所在,后来多次查看log,才知道原来一直是gcc编译错误,于是从新下载gcc)
binutils-2.19.1.tar.bz2 | dmalloc-5.5.2.tgz
duma_2_5_15.tar.gz | expat-2.0.1.tar.gz
gcc-4.3.2.tar.bz2 | gdb-6.8.tar.bz2
glibc-2.9.tar.bz2 | glibc-ports-2.9.tar.bz2
gmp-4.3.2.tar.bz2 | libelf-0.8.13.tar.gz
linux-2.6.33.7.tar.bz2 | mpfr-2.4.2.tar.bz2
ncurses-5.7.tar.gz | Sstrip.c
strace-4.5.19.tar.bz2
一定要全部下载好,要不然以后的编译过程中,速度很慢还存在潜在的危险,说不定哪个包自动下载不下来,编译错误,那连原因也找不到。(我就试过这样)
5.处理一个小问题,具体我也不清楚。见大神网站:cd /usr/bin
mv mawk mawk.bak
ln -s gawk mawk
cd /home
6.安装crosstool-ng,安装完之后 ct【tab】【tab】后会出现ct-ng,那么你安装成功了!恭喜第一步过了!
mkdir crosstool-ng
cd crosstool-ng
mkdir srcmv /(下载工具包的目录) /home/crossrool-ng/src 这里千万不要变成/home/crossrool-ng/src/ (将上面下载的源码工具包全部复制到 src目录的下)
tar -jzvf crosstool-ng-1.9.3.tar.bz2
cd crosstool-ng-1.9.3
./configure –prefix=/opt/crosstool-ng
make
make install
make cleanecho "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrcsource ~/.bashrc打开一个terminal:$ echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc 为后面调用ct-ng命令增加环境变量,让当前用户和超级用户都拥有权限下班了,明天继续写。
7.更改编译事项:
cd /home/crosstool-ng
mkdircrosstool-ng-1.9.3_build 编译时的输出目录
cd crosstool-ng-1.9.3_build/
cp /opt/crosstool-ng/lib/ct-ng-1.9.3/samples/arm-unknown-linux-gnueabi/crosstool.config .config
ct-ng menuconfig 一定要在上面建立的crosstool-ng-1.9.3_build目录下运行
改写下面的路径,按照上面的定义,最后的结果如下
Paths and misc options —>
(/home/crosstool-ng/src) Local tarballs directory 保存源码包路径
(/opt/crosstool-ng/${CT_TARGET}) Prefix directory 交叉编译器的安装路径
Target options —>
*** Target optimisations ***
(armv4t) Architecture level
(arm9tdmi) Emit assembly for CPU
(arm920t) Tune for CPU
C compiler —>
*** Additional supported languages:***
取消下面两个语言的选择
[*] C++
[ ] Fortran
[ ] Java
Paths and misc options —>
*** Build behavior ***
(4) Number of parallel jobs
如果是双核的话,不是在虚拟机下运行的,就填4.在虚拟机下,开2就行了,开4也没用。弄不好整死机了
保存退出,按enter,我按了个Y键,发觉编译出错,然后从新ct-ng menuconfig,发觉刚才的都没有保存
8.不过还是建议检查一下你下载的linuxKERNEL版本于crosstool-ng初始化的版本是否一致:
vim .config
/KERNEL
不一致则修改修改
CT_KERNEL_VERSION=2.6.32.17
CT_KERNEL_V_2_6_32_17=y
CT_LIBC_GLIBC_MIN_KERNEL=2.6.32.17
:wq保存退出
9.开始编译
.ct-ng build.4(bulid后面有个点,不要忘了。意思为4线程编译。一切正确配置的话,那么要等上30分钟或者1个小时)
风不懂云的漂泊,天不懂雨的落魄,眼不懂泪的懦弱,