创建博客 登录  
 关注
   显示下一条  |  关闭

JLJ的博客

ARM的点滴

 
 
 

日志

 
 

ubuntu10.04下建立交叉编译工具链支持软浮点  

2010-08-05 00:38:21|  分类: ARM综合 |  标签: |字号 订阅

由于编译uboot的需要,自己建立一个支持软浮点的交叉编译工具链,搞了一整天,终于有眉目了,记下了备忘。

参考了网上的不少的资料,还是需要适合自己的。感谢那些把好东西好方法共享出来的网友们!

用到的源码包如下,建议新手全部放在/home/XXX/downloads/ 目录下。

=======================================================================

arm-linux-gcc-3.4.1.tar.gz

glibc-2.3.3.tar.gz

linux-2.6.8.tar.gz

crosstool-0.43.tar.gz

binutils-2.15.tar.gz

glibc-linuxthreads-2.3.3.tar.gz

========================================================================

1. ubuntu10.04下默认的GCC版本是4.4.3,但这个不是版本越高越好,怨念啊!版本太高,对语法什么的要求也高,编译不成功,降低版本吧。使用4.1的:

#apt-get install gcc-4.1                                //安装4.1的GCC

#rm /usr/bin/gcc                                          //删除之前4.4.3的快捷方式,4.4.3的GCC并未删除

#ln -s /usr/bin/gcc-4.1 /usr/bin/gcc              //建立4.1的快捷方式

这是由于crosstool中定义了GCC的版本的上下线,最高也就到4.1,在其配置的时候会对这个版本信息进行检测,不在其规定范围就报错了。

2. 修改sh版本,把dash改为bash

#ls -la /usr/bin                    //若链接显示dash则运行

#dpkg --reconfigure dash 

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

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

$tar xzvf crosstool-0.43.tar.gz

$cd crosstool-0.43

建立自己的脚本配置文件arm-softfloat (由demo-arm-softfloat.sh文件修改)

$cp demo-arm-softfloat.sh arm-softfloat.sh

$vim arm-softfloat.sh

其中

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

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

eval `cat arm-softfloat.dat gcc-3.4.1-glibc-2.3.3.dat` sh all.sh --notest        //红色为自己所选的GCC和GLIBC的版本号

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

再修改 gcc-3.4.1-glibc-2.3.3.dat

$vim gcc-3.4.1-glibc-2.3.3.dat

内容为:

BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.1
GLIBC_DIR=glibc-2.3.3
LINUX_DIR=linux-2.6.8
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.3

注意自己的工具的版本最好和这里是对应的,省的编译器找不到报错或是连网下载浪费时间。

$vim arm.dat

KERNELCONFIG=`pwd`/arm.config
TARGET=arm-softfloat-linux-gnu
TARGET_CFLAGS="-O"

4. 编译执行sh arm-softfloat.sh,一个小时左右你就可以看到/opt/crosstool/目录下有你想要的东西了。

 

常见错误:

(1)权限问题:提示不能建立目录或是其他拒绝访问的信息

        方法: 切换到root身份执行,然后再切换回来

(2)安装过程中提示bison、flex 、build-essential、patch 、libncurses5-de相关字眼的错误

        解决方法:切换到root用户,直接执行

        #apt-get install XXX              //XXX指相应的要安装的东西

(3)关于linux-2.6.8的"*current_menu"

解决办法:

将linux-2.6.8目录下的/script/kconfig/mconf.c中的91行

        static struct menu *current_menu;

改为

        struct menu *current_menu;

 即可。

(4)提示ld as  " version too old ";其实这还是一个ubuntu自带的ld as版本太高的原因,

解决方法:

这里推荐安装binutils的2.18版本,然后替换系统中的2.20版本。方法如下

解压源码包

$cd binutils-2.18

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

$make all

$make install

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

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

#rm /usr/bin/ld  /usr/bin/as

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

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

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

  评论这张
转发至微博
转发至微博
0   分享到:        
阅读(730)| 评论(0)| 引用 (0) |举报

历史上的今天

相关文章

最近读者

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--相关文章--> <#--历史上的今天--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012