交叉编译工具链

http://book.51cto.com/art/201008/217471.htm

参考网站:http://book.51cto.com/art/201008/217471.htm


如何来构建一个交叉编译工具链。

在 linux系统下,最常用的构建工具链的方法有三种:

一种为分步构建交叉编译链,这种方法比较复杂,难度也大,即使从业多年的人员,也不能保证一次构建成功,所以需要足够的耐心和毅力,如果为了深入学习的目的,可以使用这种方法进行构建;

第二种方法通过crosstool脚本工具来实现构建编译链,这种方法操作简单,出错率也比较低,所以建议大多数情况下使用这种方法进行构建;

第三种方法更为简单,就是从网上下载别人编译好的工具链来使用,这种方法最明显的缺陷就是不够灵活,别人编译的工具链无法完全适应于自己所使用的环境,而且也会出现一些莫名其妙的错误,所以这种方法一般不推——荐使用。

下面就详细介绍第二种方法使用crosstool脚本工具建立交叉编译工具链。


工具链一般由编译器、连接器、解释器和调试器组成。在X86的Linux主机上,交叉开发工具链除了能够编译生成在ARM、MIPS、PowerPC等硬件架构上运行的程序,还可以为X86平台上不同版本的Linux提供编译开发的程序功能。所以,可以通过在同一台Linux主机上使用交叉编译工具的方式来维护不同版本的X86目标机。当然,这里我们主要用于编译在ARM硬件架构上的程序,这也是嵌入式开发的一种经常使用的方式。

下面,我们主要介绍Linux经常使用的工具链软件:Binutils、GCC、Glibc和Gdb。其主要特点如下。

Binutils是二进制程序处理工具,包括连接器、汇编器等目标程序处理的工具。

GCC(GNU Compiler Collection)是编译器,不但能够支持C/C++语言的编译,而且能够支持FORTRAN JAVA ADA等编程语言。不过,一般不需要配置其他语言的选项,也可以避免编译其他语言功能而导致的错误。对于C/C++语言的完整支持,需要支持Glibc库。

Glibc是应用程序编程的函数库软件包,可以编译生成静态库和共享库,完整的GCC需要支持Glibc。

Gdb是调试工具,可以读取可执行程序中的符号表,对程序进行源码调试。

通过这些软件包,可以生成gcc、g++、ar、as、ld等编译链接工具,还可以生成glibc库和gdb调试器。在生成交叉开发的工具链时,可以在文件名字上加一个前缀,用来区别本地的工具链,例如arm-linux-gcc,表示这个编译器用于编译在Linux系统下ARM目标平台上运行的程序。


编译工具链一般最简化的为 binutils + gcc + glibc + kernel-header 组合的环境。

1、到网站http://kegel.com/crosstool/crosstool-0.43.tar.gz下载制作脚本

2、然后下载制作交叉编译器所需要的源码包,下面就是各个源码包的下载站点:

ftp://ftp.gnu.org/pub/gnu/gcc/gcc-3.4.5/gcc-3.4.5.tar.bz2

ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.3.6.tar.bz2

ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.3.6.tar.bz2

ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.15.tar.gz,      

 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.8.tar.gz


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值