开发版交叉编译环境的工具链制作---arm-linux

二次尝试,自己arm-linux工具链终于编译成功,写写体会与步骤:
  1.准备工作。下载需要的lib工具包所示:
    binutils-2.16.1.tar.bz2
    gdb-6.5.tar.bz2
    glibc-2.3.2.tar.bz2
    crosstool-0.43.tar.gz
    glibc-linuxthreads-2.3.2.tar.bz2   
    linux-2.6.15.4.tar.bz2
    gcc-4.1.0.tar.bz2      
    linux-libc-headers-2.6.12.0.tar.bz2
  完以后在放在自己喜欢的位置。本人在/home/zbp/downloads 文件目录,以下以此目录为例。到此位置准备工作已经完成。
  2.$cd /home/zbp/downloads           //进入downloads
  3.$tar -xzvf crosstool-0.43.tar.gz  //解压crosstool
  4.$cd crosstool-0.43                //进入crosstool-0.43编译工具
  5.$cp cp demo-arm9tdmi.sh  arm9.sh  //目录中有预备的编译的shell文件demo,如果你的开发板是arm9 那就和本人一样,照做就是。如果不是,就cp一个demo-arm.sh  文件                                        进行修改。
  6.$vim arm9.sh    //修改arm9.sh
set -ex
TARBALLS_DIR=$HOME/downloads
RESULT_TOP=/opt/crosstool
export TARBALLS_DIR RESULT_TOP
GCC_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
eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest
 
echo Done.
   主要修改第三行,编译出来的工具链目录,本人放在home/zbp。其他不用修改。
   第五行有必要解释一下,标示编译的工具链将支持什么语言。可以自行添加,本人用c,c++编程,所以不需要修改。如果需要java,可以添加上去,编译的时候,如果提前没有下载相应的java包,crosstool会自动下载,不过下载速度比较慢。这也我们为什么提前要把编译的工具包提前下载。你可以在第一步的准备工作不需要做,直接就下载一个crosstool工具,解压,开始编译,编译的过程估计需要一,两天,如果网速慢的.
   最后一行就是最终编译出来的工具链的版本。#开到头的为注释。 你可以编译多种版本的工具链,只要取消对应前面的#。
  7.$vim arm9tdmi.dat   //看看上一步最后一行,用到哪个dat文件。 arm9tdmi.dat 和gcc-4.10-glibc-2.3.2-tls.dat 修改。
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-linux
GCC_EXTRA_CONFIG="--with-cpu=arm9tdmi --enable-cxx-flags=-mcpu=arm9tdmi"
TARGET_CFLAGS="-O"
    第二行解释,编译出来的工具链的 编译c,或者c++文件的命令标示,可以修改,也可以不修改。一般修改为arm-linux。
    第四行,标示全面优化参数,不用修改。
  8.$vim gcc-4.10-glibc-2.3.2-tls.dat  //gcc-4.10-glibc-2.3.2-tls.dat 一般不修改默认就可以了。这里显示标示工具链编译所需要的的包文件版本。
  9.$./arm9.sh   //执行shell文件。开始编译,如果所有包都是提前下载的,本人用了3个小时。好了,现在可以去干别的事情了。本人看了一部电影《叶问》,打了2盘星际,编译完成。
  10.$export PATH=/home/zbp/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/bin:$PATH //设置环境变量进行测试编译好的工具链是否满意。
  11.$vim hello.c //int main(){printf("hello");return 0;}
  12.$arm-linux-gcc -o hello hello.c //编译hello.c文件,编译出来的hello为二进制文件。
  13.$./hello //运行报错,别急,正确。原因是二进制文件不能直接在pc机上运行。通过samba服务把文件传到板子上试试,显示hello,恭喜你,成功;如果现在pc机上运行程序,请看下面
  14.$gcc -o hello hello.c //编译出来的hello可以在pc运行了,显示hello。
                             交叉编译工具链制作完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值