linux交叉工具链 crosstool

建立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个小时)

风不懂云的漂泊,天不懂雨的落魄,眼不懂泪的懦弱,

linux交叉工具链 crosstool

相关文章:

你感兴趣的文章:

标签云: