主机Linux的交叉编译链生成、安装、配置

Linux发行版缺乏一些开发用的工具、文件,例如标准C库的头文件、g++编译器等。

1 . 使用以下命令安装基本的开发环境

$ sudo apt-get install build-essential

还需要安装bison、flex,它们分别是语法、词法分析器:

$ sudo apt-get install bison flex

安装C函数库的man手册,以后就可以通过类似”man read”命令查看函数的用法:

$ sudo apt-get install manpages-dev

2 . 安装交叉编译工具链

基于gcc和glibc来制作工具链,可以使用crosstool来进行编译;如果要基于gcc和uClibc来制作工具链,可以使用buildroot来进行编译。

crosstool的官方网址为 http://kegel.com/crosstool/ 可以参考其中的crosstool-how to.html选择、配置、编译工具链。

  • 1 . 修改crosstool脚本
    执行以下命令解压:
$ tar xzf crosstool-0.43.tar.gz

glibc-2.3.6-version-info.h_err_patch是一个补丁文件,它修改glibc-2.3.6/csu/Makefile里面的一个小错误(导致自动生成的version-info.h文件编译出错)。
将它复制到crosstool的补丁目录下:

$ cp glibc-2.3.6-version-info.h_err.patch crosstool-0.43/patches/glibc-2.3.6/

后续将执行crosstool-0.43目录下的demo-arm-softfloat.sh脚本来进行编译,摘取它的部分内容如下:

07 TARBALLS_DIR=$HOME/downloads
08 RESULT_TOP=/opt/crosstool
09 export TARBALLS_DIR RESULT_TOP
10 GCC_LANGUAGES="c,c++"
11 export GCC_LANGUAGES
...
26 #eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
27 #eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
28 #eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
29 eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest

第7行的TARBALLS_DIR表示源码存放的位置。
第8行的RESULT_TOP表示编译结果存放的位置。
第10行的GCC_LANGUAGES表示制作出来的工具链支持C、C++语言,如果要支持其他语言可以在里面添加。eg:

GCC_LANGUAGES="c,c++,java"

从26~29行可知,可以选择多种gcc、glibc版本,这里使用的是gcc-3.4.5 和 glibc-2.3.6。执行demo-arm-softfloat.sh脚本后,它将根据arm-softfloat.dat、gcc-3.4.5-glibc-2.3.6.dat这两个文件中定义的环境变量调用all.sh脚本进行编译。

gcc-3.4.5-glibc-2.3.6.dat文件指明了要下载或使用的文件。

需要修改demo-arm-softfloat.sh、arm-softfloat.dat、all.sh这3个文件。

  • 1 . 修改demo-arm-softfloat.sh,修改后的内容如下:
TARBALLS_DIR=/home/uidj3561/WorkSpace/work/crosstool/create_crosstools/src_gcc_glibc
RESULT_TOP=/home/uidj3561/WorkSpace/crosscompile
  • 2 . 修改arm-softfloat.dat,修改如下:
TARGET=arm-softfloat-linux-gnu
改为:
TARGET=arm-linux

它表示编译出来的工具样式为arm-linux-gcc,arm-linux-ld等,这是常用的名字。

  • 3 . 修改all.sh
    如果现在就执行demo-arm-softfloat.sh,最终结果将存放在
    /home/uidj3561/WorkSpace/crosscompile/gcc-3.4.5-glibc-2.3.6/arm-linux目录下,为简单起见,修改all.sh,将结果存放在/home/uidj3561/WorkSpace/crosscompile/gcc-3.4.5-glibc-2.3.6/目录下
PREFIX=${PREFIX-$RESULT_TOP/$TOOLCOMBO/$TARGET}
改为:
PREFIX=${PREFIX-$RESULT_TOP/$TOOLCOMBO}

编译、安装工具链:
执行以下命令:

$ cd crosstool-0.43/
$ ./demo-arm-softfloat.sh

编译后,将在/home/uidj3561/WorkSpace/crosscompile/下生成gcc-3.4.5-glibc-2.3.6/子目录,交叉编译器、库、头文件都包含在里面。设置PATH环境变量即可使用。也可以使用以下命令评测:

$ arm-linux-gcc -v
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值