免费注册 查看新帖 |

Chinaunix

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

在linux下使用crosstool制作自己的arm交叉编译环境 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-12 09:43 |只看该作者 |倒序浏览
crosstool是个不错的软件,能够很方便的编译自己的交叉编译环境。目前最新版本crosstool-0.43 在地址
http://kegel.com/crosstool/crosstool-0.43.tar.gz
可以下载。
首先获取工具包,解压后进入其目录
  • wget http://kegel.com/crosstool/crosstool-0.43.tar.gz tar -xzvf crosstool-0.43.tar.gz
  • cd crosstool-0.43
    选择自己希望的模板,这儿是以arm9做试验玩,因此选择了 demo-arm9tdmi.sh 做模板。
  • cat demo-arm9tdmi.sh
    可以看到
  • #!/bin/sh# This script has one line for each known working toolchain
  • # for this architecture.  Uncomment the one you want.# Generated by generate-demo.pl from buildlogs/all.dats.txt

  • set -ex
  • TARBALLS_DIR=/home/lpsc/downloadsRESULT_TOP=/home/lpsc/crosstool
  • export TARBALLS_DIR RESULT_TOPGCC_LANGUAGES=”c,c++”
  • export GCC_LANGUAGES
  • # Really, you should do the mkdir before running this,# and chown /opt/crosstool to yourself so you don’t need to run as root.
  • mkdir -p $RESULT_TOP
  • #eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh –notest
  • #eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh –notest
  • #eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh –notest
  • #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh –notest
  • #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh –notest
  • #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh –notest
  • #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh –notest
  • #eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh –notest
  • #eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh –notest
  • #eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh –notest#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh –notest
  • [color="#ff0000"]eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh –notest
    其中7、8、37行为自己修改的地方,看37行,表示我们要编译 gcc 4.1.0 的。
  • cat arm9tdmi.dat
    可以看到
  • KERNELCONFIG=`pwd`/arm.configTARGET=arm-9tdmi-linux-gnu
  • GCC_EXTRA_CONFIG=”–with-cpu=arm9tdmi –enable-cxx-flags=-mcpu=arm9tdmi”
    其中2行的文字可以根据自己的需要做修改,一般是 arm-linux ,符合网上面很多编译情形的。
  • cat gcc-4.1.0-glibc-2.3.2-tls.dat
    可以看到
  • BINUTILS_DIR=binutils-2.16.1GCC_CORE_DIR=gcc-3.3.6
  • GCC_DIR=gcc-4.1.0GLIBC_DIR=glibc-2.3.2
  • LINUX_DIR=linux-2.6.15.4LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
  • GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2GDB_DIR=gdb-6.5
    将“=”后面对应的bz2包下载下来(这些文件我基本都是在 chinaunix
    那儿下载的,下载速度很快),放到前面设定的
    /home/lpsc/downloads目录中。不下载也可以,sh脚本中自己会用wget下载,但是会等很多时间,比自己直接下载多出了很多很多的时
    间(具体多多少,自己试验一下就知道了,保证你试了后会很后悔,呵呵^_^)。
    然后执行
  • ./demo-arm9tdmi.sh
    然后出去逛逛街、拿本书看看,睡会觉听会音乐或打开一个电影看看什么都可以,
    这个过程要有很长时间(在我的AMD64 2.8GCPU,1G内存SATA硬盘的台式机电脑上用了大约1个半小时的样子),足够干以上列出来的事了。

    译完成后,有目录 /home/lpsc/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/
    目录比较长,后来分析了一下all.sh脚本,发现可以通过设置PREFIX值来减少结果路径长度,不过编译一遍需要那么长的时间,就没有实际试验。
    最后在~/.bashrc文件的最后加入:
  • export PATH=$PATH:/home/lpsc/crosstool/gcc-4.1.0-glibc-2.3.2/arm
    这样新打开的终端就可以使用 arm-linux-gcc 等命令了。
    这儿有编译好的gcc-3.4.1和gcc-3.3.2版本的下载
    这儿有几个更旧一点的包(有经典的2.95.3版本)
    下载下来后使用
  • tar -xjvf arm-linux-gcc-3.3.2.tar.bz2 -C /tar -xjvf arm-linux-gcc-3.4.1.tar.bz2 -C /
    [color="#000000"]将交叉工具链释放到/usr/local/arm目录下。
    再在~/.bashrc文件的最后加入
    [color="#000000"]
  • export PATH=$PATH:/usr/local/arm/3.4.1/bin
                   
                   
                   

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

    本版积分规则 发表回复

      

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

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP