嵌入式系统交叉编译

来源:互联网 发布:北京mba院校排名 知乎 编辑:程序博客网 时间:2024/06/12 18:49

绝大多数的软件开发都是以native方式进行的,既本机开发、调试,本机运行的方式。这种方式不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(既开发板)上运行开发工具和调试工具。通常的嵌入式系统的软件开发采用一种交叉编译调试的方式,交叉编译调试环境建立在主机(既一台PC机)上,对应的开发板叫做目标板。

采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行,这就需要在强大的pc机上建立一个用于目标机的交叉编译环境。这是一个由编译器、连接器和解释器组成的综合开发环境。

交叉编器通常是采用PC(x86)作为主机来搭建开发环境进行编译,但编译出的软件能够在特定CPU体系架构的目标设备(比如ARM设备)上运行的一套编译工具。

 

利用运行在某机器上的编译器编译某个源程序生成在另外一台机器上运行的目标代码,这种编译器既所谓的交叉编译器(Cross Compiler)。

linux下的交叉编译环境重要包括以下几个部分:

     1,针对目标系统的编译器gcc

     2,针对目标系统的二进制工具binutils

     3,目标系统的标准cglibc,有时出于减小libc库大小的考虑,你也可以用别的c库来代替glibc,例如uClibcnewlib等;

     4,目标系统的linux内核头文件。

gccbinutilsglibc以及linux内核头文件均有各自的版本号,并不是任意组合都可以编译成功并最终建立一个交叉编译环境的。一些可以直接利用的组合方式,可以通过该网址查看:http://kegel.com/crosstool/ 当我们选择了某一种组合以后,仍然需要对源代码做相应的修改,才能最终编译成功。

Crosstool是由美国人Dan Kegel(毕业于加(利福尼亚)州工学院)开发的一套可以自动编译不同匹配版本gcc和glibc,并作测试的脚本程序。

1.准备资源文件
软件包名称 下载站点 
crosstool-0.43.tar.gz http://kegel.com/crosstool/crosstool-0.43.tar.gz 
binutils-2.15.tar.bz2 http://ftp.gnu.org/gnu/binutils/ 
gcc-3.4.5.tar.bz2 http://ftp.gnu.org/gnu/gcc 
glibc-2.3.6.tar.bz2 http://ftp.gnu.org/gnu/glibc 
glibc-linuxthreads-2.3.6.tar.bz2 http://ftp.gnu.org/gnu/glibc 
linux-2.6.28.2.tar.bz2 http://ftp.kernel.org/pub/linux/kernel/v2.6/ 
linux-libc-headers-2.6.12.0.tar.bz2 http://ep09.pld-linux.org/~mmazur/linux-libc-headers/ 

Linux环境下的GCC交叉编译器。

 

原创粉丝点击