ubuntu10.10的 crosstool安装

需要的软件可以在下面两个网站上下载

ftp://ftp.kernel.org/

ftp://ftp.gnu.org/

 

首先要保证系统中有以下软件:

 

Bison、flex 、build-essential、patch 、libncurses5-dev

 

(1)首先把GCC 降到4.1

  sudo apt-get install gcc-4.1 

  sudo rm /usr/bin/gcc

  sudo ln -s /usr/bin/gcc-4.1  /usr/bin/gcc 

  由于crosstool在相关configure中文件中会检测 gcc的版本 高于4.1的版本会报错。


(2)修改sh版本,把dash改为bash

   ls -la /usr/bin 若链接的dash则运行 

   sudo dpkg --reconfigure dash

   选择no,删除dash。(在建立交叉编译环境后,可以在运行该命令选择yes安装dash)。


(3)解压crosstool源码包,修改配置文件。 

   修改demo-arm-softfloat.sh文件。


  TARBALLS_DIR=$HOME/downloads   //表示下载的源码的存放目录

  RESULT_TOP=/opt/crosstools     //表示生成的工具链的存放目录


可以根据自己的实际情况进行修改。

  本方案需要以下软件包:

  gcc-3.4.5.tar.gz 

  glibc-2.3.6.tar.gz 

  linux-2.6.26.5.tar.gz  

  crosstool-0.43.tar.gz

  binutils-2.15.tar.gz   

  glibc-linuxthreads-2.3.3.tar.gz

 linux-libc-headers-2.6.12.0.tar.bz2


  修改相关文件gcc-3.4.5-glibc-2.3.6.dat


  只需要将文件中各源码版本和源码包匹配即可。 

(4)运行

./ demo-arm-softfloat.sh

 

运行一短时间后出现以下错误提示:

 

*** These critical programs are missing or too old: as ld。

 

这个问题其实跟降gcc版本是一个道理,并不是as与ld版本太低,而是版本高了crosstool不认识了。as 和ld都是binutils中的工具,在9.04以前binutils的版本是低于2.20的,在crosstool中的相关configure文件中有限制。然而10.04中binutils的版本为2.20,crosstool就理直气壮的说as和ld版本太低不能建立交叉编译环境。 

我的解决方法是在www.gnu.org的网站上下binutils的2.18版本,然后替换系统中的2.20版本。方法如下

解压源码包 

cd binutils-2.18 

./configure --target=“” –prefix=/tmp/binutils  --disable-nls (-prefix后面的是生成可执行文件存放的位置可以自己定义)  

make all  

make install

编译成功后在/tmp/binutils/bin/中就生成了ld as程序的可执行文件 

重新链接/usr/bin/ld 于/usr/bin/as文件 

sudo rm /usr/bin/ld /usr/bin/as 

sudo ln –s /tmp/binutils/bin/ld /usr/bin/ld 

sudo ln –s /tmp/binutils/bin/as /usr/bin/as 

然后可运行ld –v 和as –v 查看版本是否为2.18

然后再运行crosstoll-0.43目录下的demo-arm-softfloat.sh即可成功建立交叉编译环境了。

 

 

注意问题:

用demo-arm-softfloat.sh不然编译时候会出现一些错误。


如下:

今天准备把阳初2410板子的bootloader换成u-boot,所以下了u-boot-1.2.0的源码包进行修改,用3.4.1的交叉编译器.修改完编译之后出现:lib_arm/libarm.a(_udivsi3.o)(.text+0x8c):/home/qsg/u-boot-1.2.0/lib_arm/_udivsi3.S:67:relocation truncated to fit: R_ARM_PLT32 __div0
    lib_arm/libarm.a(_umodsi3.o)(.text+0xa8):/home/qsg/u-boot-1.2.0/lib_arm/_umodsi3.S:79:relocation truncated to fit: R_ARM_PLT32 __div0
    make: *** [u-boot] Error 1
这个问题,经过网上查询发现是一个"软硬浮点"的问题,可疑自给从新建立一个支持softfloat的交叉编译工具,所以现在把自己的经过写出来,希望对大家有帮助.
1、到网站http://kegel.com/crosstool/crosstool-0.43.tar.gz下载制作脚本
2、然后下载制作交叉编译器所需要的源码包,下面就是各个源码包的下载站点:

ftp://ftp.gnu.org/pub/gnu/gcc/gcc-3.4.1/gcc-3.4.1.tar.bz2

ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.3.3.tar.gz

ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.3.3.tar.gz

ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.15.tar.gz

      ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.8.tar.gz

如果你想通过这个制作脚本下载源码包也可以,就是费时间,呵呵.
3、下载完毕源码包之后,使用root用户登录AS4,然后新建目录:/opt/crosstool,然后将其所有者修改为您的普通用户(我的AS4的普通用户是coolber,以下均以coolber为例说明)
4、修改方法:chown coolber /opt/crosstool,或者在图形界面中右击crosstool目录的图标,然后选择“属性”,在属性菜单中选择“权限”,把所有者修改为coolber用户即可。
5、在目录/home/coolber目录下面新建目录downloads,然后复制刚才下载的几个源码包到目录downloads下面,同时也复制crosstool-0.28.tar.gz到downloads目录下。
6、然后切换linux的用户,在终端中输入:su coolber,然后此时终端的用户就变成了coolber了。
7、然后进入到目录/opt/crosstool下面:cd /opt/crosstool,解压之前下载的crosstool-0.28.tar.gz文件:tar xvfz /home/coolber/downloads/crosstool-0.28.tar.gz -C/opt/crosstool。
8、解压完毕后,进入crosstool-0.28目录:cd crosstool-0.28。
9、然后执行:sh demo-arm-softfloat.sh就可以开始制作编译器了。
10、漫长的等待之后,然后会在默认的/opt/crosstool/目录下面产生一个名为arm-softfloat-linux-gnu的目录,它下面就是刚刚编译成功的交叉编译器了。
然后修改PATH:在命令行下执行
exportPATH=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/:$PATH
然后进入u-boot-1.2.0目录,修改Makefile文件,将使用的交叉编译器从arm-linux-改为arm-softfloat-linux-gnu-
最后从新编译u-boot结果成功!!!! 

 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值