宅学部落王利涛 2010-07-17
交叉编译:在一种计算机环境中运行的编译程序能编译出在另外一种环境下运行的代码,这个过程叫交叉编译。
如在PC上编写在实验板上执行的ARM-Linux程序。
“平台”包含两个概念
体系结构(X86等),操作系统(Windows等)
同一体系结构可运行不同操作系统,
同一操作系统也可在不同体系结构运行。
由于编译需要占用较大内存空间,ARM处理器本身速度又较慢,故采用交叉编译。
进行交叉编译,需要在主机平台(PC机)安装对应交叉编译工具链。
一般用4.3.2版本编译器,支持EABI
EABI:嵌入式应用二进制接口
安装后在/usr/local/arm/4.3.2/bin目录下会发现arm-linux-gcc
但此时终端中键入arm-linux-gcc会提示找不到命令
因为此命令并没有在系统默认的bin目录下
较简便的方法是编辑系统的profile文件添加环境变量:
vi /etc/profile
在中间处添加:export PATH=/usr/local/arm/4.3.2/bin:$PATH
保存退出,再执行source /etc/profile 使此文件生效。
此时用arm-linux-gcc即可编译出可执行文件(可能会有警告,因为gcc规定main函数返回值要为int)。
但执行时会提示不能执行二进制文件,因为此程序是供ARM-Linux运行的。
在编译ARM平台源码包时,
需要修改Makefile文件中CC=gcc为CC=arm-linux-gcc
修改CPP=gcc -E为CPP=arm-linux-gcc -E