开发环境:Ubuntu 10.04,linux-2.6.26.5
开发步骤:
1.安装和下载可能用到的软件包。
sudo apt-get install bison flex build-essential patch libncurese5-dev
//libncurese5-dev在10.04中似乎apt-get找不到,但是新力得里看得到的
也可以把这些软件的deb报下下来,然后 sudo dpkg -i *.deb
2. 降低gcc的版本
Ubuntu默认的gcc是4.4的,版本高也是问题(对此实在是无语,真要命)但并不需要卸载4.4,因为我们在终端输入的gcc只是gcc-4.4的软连接,把这个软连接指向4.1就行了。两种方法:
(a).直接apt-get安装
sudo apt-get install gcc-4.1
安装后gcc被覆盖,指向了gcc-4.1。
(b).下载软件包
gcc-4.1_4.1.2-23Ubuntu3_i386.deb
gcc-4.1-base_4.1.2-23Ubuntu3_i386.deb
cpp-4.1_4.1.2-23Ubuntu3_i386.deb
然后sudo dpkg -i *.deb安装
安装好后修改软连接
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc
3. 修改sh版本
运行:ls -la /bin/sh
可以看到/bin/sh的链接是dash,运行以下命令:
sudo dpkg-reconfigure dash
选择no以删除dash
可以再运行一下ls -la /bin/sh 可以看到它现在指向了bash,别还以为是dash,别看错哦~
4. 新建安装文件夹crosstool和downloads,最好是在/home/lnux下,一旦建立就不要移动了。
mkdir /home/linux/downloads,将crosstoll-0.43.tar.gz拷入。除此之外,还有其他下面要用到的源码包,如果没有的话下面会自动下载。
5.解压crosstool-0.43.
cd /home/linux/downloads
tar -zxvf crosstool-0.43.tar.gz
cd crosstool-0.43
这个目录下有很多脚本和配置文件,每一个支持的处理器都有对应的脚本。我们现在选用的demo-arm-softfloat.sh是建立支持软浮点的arm交叉编译工具链
6.修改 demo-arm-softfloat.sh
vim demo-arm-softfloat.sh
修改这两句:
TARBALLS_DIR=$HOME/downloads
RESULT_TOP=/opt/crosstool
为:
TARBALLS_DIR=/home/linux/downloads //下面运行时用的软件包自动下载会保存在这里
RESULT_TOP=/home/linux/crosstool // 生成的工具链会保存在这里。这个文件以后不要移动
7.修改gcc-3.4.5-glibc-2.3.6.dat
vim gcc-3.4.5-glibc-2.3.6.dat
只要修改LINUX_DIR=linux-2.6.26.5这一句,指定你要的内核版本,如果downloads里有的话会自动去读,没有会下载放在downloads里。
8. 执行demo-arm-softfloat.sh
./demo-arm-softfloat.sh
这里要很长时间,半小时左右,机子好点十几分钟也可以的。
我在这里出错了,错误代码:
These critical programs are missing or too old: as ld………..
上网查了以后说是binutils版本为2.20,太高了,要降到2.19(寒阿),有人修改configure文件,进到里面把2.XX的限制改掉,但是这样有未知的危险,还有一种可行的就是直接安装binutils2.19这种比较可行。
9.修改环境变量
sudo vim /etc/bash.bashrc
在末尾添加:
export PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:
10.重新打开一个终端执行:arm-softfloat-linux-gnu-gcc -v
显示:
Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure –target=arm-linux –host=i686-host_pc-linux-gnu –prefix=/usr/local/arm/3.4.1 –with-headers=/usr/local/arm/3.4.1/arm-linux/include –with-local-prefix=/usr/local/arm/3.4.1/arm-linux –disable-nls –enable-threads=posix –enable-symvers=gnu –enable-__cxa_atexit –enable-languages=c,c++ –enable-shared –enable-c99 –enable-long-long
Thread model: posix
gcc version 3.4.5
则表示构建成功。
11.恢复gcc和sh
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
重新安装dash
sudo dpkg-reconfigure dash
选择“是”重新安装dash.