Chinaunix首页 | 论坛 | 博客
  • 博客访问: 875284
  • 博文数量: 366
  • 博客积分: 10267
  • 博客等级: 上将
  • 技术积分: 4290
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:04
文章分类

全部博文(366)

文章存档

2012年(366)

分类: 系统运维

2012-04-10 19:20:01

使用crosstool-0.43为移植U-boot-1.2.0

为s3c2410开发板搭建交叉编译环

参考资料

crosstool-howto             http://kegel.com/crosstool/current/doc/crosstool-howto.html

build arm-linux toolchain        http://www.cnitblog.com/zouzheng/articles/40304.html

  1. 目标

    用crosstool-0.43源代码编译基于2.6.22.2的内核和gcc-4.1.0glibc-2.3.2的arm9tdmi交叉编译器。

     

  2. 编译环境

    Ubunt11.10 gcc-3.3.6

     

  3. 下载uboot和工具链的源文件

    43

    binutils-2.16.1.tar.bz2

    注:编译工具链需要的文件放在 ~/downloads下,也可让crosstool自动下载。

 

  1. 配置crosstool
  2. 解压(操作目录为 ~)

    tar –xf crosstool-0.43

  3. 修改demo-arm9tdmi.sh
    gedit demo-arm9tdmi.sh

     

        把编译工具改为自己编译的gcc-3.3.6

        把tarball的位置改为/home/lushuai/downloads

    TARBALLS_DIR=$HOME/downloads

 

        把编译产品的位置改为/opt/crosstool

     RESULT_TOP=/opt/crosstool

    去掉eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat-tls` sh all.sh notest的注释,并在后面加 –unpacked (为什么?)

eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh notest注释掉

 

  1. 修改gcc-4.1.0-glibc-2.3.2.dat

    gedit gcc-4.1.0-glibc-2.3.2.dat

    把linux内核版本改为linux-2.6.22.2

 

  1. 创建产品目录并修改其权限为当前用户

     

    sudo mkdir /opt/crosstool sudo chown $USER /opt/crosstool sh demo-arm9tdmi.sh



    注:如果以root权限执行,则会报错说这么做非常危险。

 

 

  1. 可能的错误
    1. No rule to make target `hello_world.srec', needed by `all'.
      解决:修改 examples目录下的Makefile
      将原文件中的
      SREC    = hello_world.srec
      BIN     = hello_world.bin hello_world
      改为:
      SREC    = hello_world.o
      BIN     = hello_world.o hello_world

    (为什么?)

     2. 记得报错说有一个文件,是一个目录下的version.c有错误打开那个version.c一看,全是版本信息,完全是一个""下的字符串,根据标准C语言,字符串间换行,行末一改有换行符,于是在该加换行符的地方加上了换行符\。重新编译,成功。

     

    注:ubuntu11.1 自带的gcc版本为4.6,直接编译会显示gcc bad version,no gcc or version too old。所以需要先编译gcc3.3.6。由于gcc4.6语法规则比较严格,编译4.5以前版本的gcc时出现了各种错误。这个步骤上我废了很大的力 气,先通过ubunt一个镜像源下载安装了gcc-4.2.4,然后各种提示缺文件,一一手动mv、ln以后成功编译了hello word。 然后失望的看到gcc作者在04年给开发者的一封回信,说诸如这类的版本错误,他们已经不准备再重新维护。我只好又用bootstrap编译了 gcc3.6.3,成功,跟之前一样,一通ln、mv之后,编译hello word成功。 具体gcc-3.6的操作过程在我的另一片文章里进行描述。

    以后搞开发一定要同步写好文档! 干完活在补文档真心累,各种想不起来,文档各种找不到……晕……

阅读(977) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~