免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1516 | 回复: 0
打印 上一主题 下一主题

制作支持软浮点的交叉编译器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-07 17:12 |只看该作者 |倒序浏览

                1.主机环境AS4 gcc-3.4.6
因为gcc、binutils、glibc以及linux内核头文件均有各自的版本号,并不是任意组合都可以编译成功并最终建立一个交叉编译环境的。一些可以直接利用的组合方式,可以通过该网址查看:
http://kegel.com/crosstool/crosstool-0.43/buildlogs/
当我们选择了某一种组合以后,仍然需要对源代码做相应的修改,才能最终编译成功。
本文使用的组合为gcc-3.4.1+glibc-2.3.3+binutils-2.15+linux-2.6.8
http://kegel.com/crosstool/crosstool-0.43.tar.gz
2.交叉编译环境的建立过程
为了更清晰的描述交叉环境的建立过程,在此对各个源码包的作用进行说明。
binutils-2.15.tar.gz:这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。其主要目的是为GNU系统提供汇编和连接工具等。
gcc-3.4.1.tar.gz:这个压缩包主要是为GNU系统提供C 编译器。现在支持多种语言,这其中包括C/C++、Fortran、Java、Objective-C、Ada等。
glibc-2.3.3tar.gz:Libc是很多用户层应用都要用到的库,用于定义系统调用和其它一些基本的函数调用。
   glibc-linuxthreads-2.3.3.tar.gz:这是Libc用于支持Posix线程而单独发布的一个压缩包。
linux-2.6.8.tar.bz2:这个压缩包就是Linux的内核,在编译glibc时,要用到Linux内核中的include目录的内核头文件。3.交叉编译工具的建立不允许在根用户下进行编译
1)下载以上源文件放在/home/mlch/download/目录下(否则编译会会找不到源文件)
2)建立/opt/crosstool 目录改变所有者chown mlch /opt/crosstool
3)tar zxvf crosstool-0.43.tar.gz cd crosstool-0.43
3)vi demo-arm-softfloat.sh 修改如下:
     1 #!/bin/sh
      2 # This script has one line for each known working toolchain
      3 # for this architecture.  Uncomment the one you want.
      4 # Generated by generate-demo.pl from buildlogs/all.dats.txt
      5
      6 set -ex
      7 TARBALLS_DIR=$HOME/downloads//源文件所在目录
      8 RESULT_TOP=/opt/crosstool   //目标生成文件所在目录
      9 export TARBALLS_DIR RESULT_TOP
     10 GCC_LANGUAGES="c,c++"
     11 export GCC_LANGUAGES
     12
     13 # Really, you should do the mkdir before running this,
     14 # and chown /opt/crosstool to yourself so you don't need to run as root.   
    15 mkdir -p $RESULT_TOP
     16
     17 eval `cat arm-softfloat.dat gcc-3.4.1-glibc-2.3.3.dat` sh all.sh --notes   t     //可修改为相应的版本
     18     
      19 echo Done.
   
   4)vi arm-softfloat.dat修改如下
    1 KERNELCONFIG=`pwd`/arm.config
    #  2 TARGET=arm-softfloat-linux-gnu
    2 TARGET=arm-linux(注意不能是arm-linux-)
    3 TARGET_CFLAGS="-O"
    4 GCC_EXTRA_CONFIG="--with-float=soft"
     5 GLIBC_EXTRA_CONFIG="--without-fp"
4. su  mlch
   sh demo-arm-softfloat.sh
   编译过程可能出现权限不够的问题可切换到根用户改变权限再用自己的用户编译
  最后在/opt/crosstool/生成完整的交叉编译工具
  ok 试一下hello world ......
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/70379/showart_1988607.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP