搭建交叉编译环境

4.1、搭建交叉编译环境
4.1.1概述
交叉编译,就是用运行在一种计算机环境中的编译程序,去编译出在另外一种环境下运行的代码。具有这种能力的编译器就叫交叉编译器。换而言之,就是在一个平台上生成另一个平台上的可执行代码。这里所指的平台实际上包含了软/硬件两个方面的概念:操作系统(Operating System)和体系结构(Architecture)。同样是Linux系统,在不同体系结构的硬件平台上的可执行代码是不同的,譬如ARM和x86,因为它们的指令系统不一样,所以可执行代码也就有差异。同样是ARM平台,由于操作系统的实现不一样,可执行代码也会不一样。
一般情况下,嵌入式Linux系统的资源紧张,无法安装运行所需的编译器,甚至是目标平台都还没有建立,连操作系统都没有,根本谈不上运行编译器。常用的做法是在一台PC上搭建交叉编译环境,即配置安装交叉编译工具链(针对目标平台的编译器gcc、二进制工具binutils、标准c库glibc和linux内核头文件等等),在该环境下编译出嵌入式Linux系统所需的操作系统系统、应用程序等,然后再上传到目标平台上。
4.1.2、安装
要搭建交叉编译环境,就需制作一个交叉编译工具链,一般有三种途径:
² 手工制作,一步步编译
这种方式的难度比较大。制作交叉编译工具链所需要的源码包存在版本匹配的问题,如果编译过程中出现了问题,去修正这些问题比较困难。另外还要为制作环境安装好所需的工具软件
² 通过脚本编译
用crosstool生成的脚本来制作,比手动编译难度会小一些,但是需要修改脚本,要熟悉shell脚本知识。
² 直接获取
网络上有许多已经制作好的交叉编译工具链,直接下载,安装配置下就行了。
有了交叉编译工具链后,就可以安装了。先把得到的压缩包解压到指定的目录,然后再配置系统环境。在ubuntu下安装配置ARM平台的交叉编译环境的步骤如下:
² 下载
下载广州友善之臂计算机公司制作的交叉编译工具链arm-linux-gcc-4.3.2.tgz,下载地址是“http://arm9download.cncncn.com/linux/arm-linux-gcc-4.3.2.tgz。或是在网络上搜索下,找到合适的交叉编译工具链。
² 解压
以root账户登录系统,把arm-linux-gcc-4.3.2.tgz拷贝到根目录下,然后解压,执行命令如下:
# tar -zxvf arm-linux-gcc-4.3.2.tgz
² 配置系统环境变量
交叉编译工具链安装好了以后,最好先配置系统环境变量,把其所在的路径加入进PATH,这样就能在任何目录下方便的使用。通常,要修改环境变量,可以修改以下三个脚本中的一个:全局(公有)配置脚本/etc/profile,所有用户登录时都要执行;Shell初始化脚本/etc/bash.bashrc,也是所有用户登录时执行的;root账户目录下的Shell配置脚本/root/.bashrc(换成其他账户的话,就在其工作目录下去找),仅仅是root账号登录时执行的。推荐修改/etc/bash.bashrc文件,方法如下:
v 打开文件
# vi /etc/bash.bashrc
v 修改文件
在最后加上一行,添加如下内容:
export PATH=$PATH:/usr/local/arm/4.3.2/bin
v 设置生效
如果要使新的环境变量立即生效,而不用重启电脑,则执行如下命令:
# source /etc/bash.bashrc
v 验证配置
可以使用如下指令检查环境变量是否配置成功:
# echo $PATH
修改其他的脚本文件方法类似,只是注意其影响是否覆盖到登录账户。
² 测试
环境变量配置好了,查看下arm-linux-gcc的版本信息,在终端中输入

# arm-linux-gcc -v

再编写一个测试程序test.c来测试交叉编译环境是否搭建成功内容如下:

#include <stdio.h>

int main(void)

{

printf("Hello arm gcc.\n");

return 0;

}

编译test.c,并用file查看可执行程序的格式信息:

# arm-linux-gcc -o test test.c

# file test

test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped


转自:http://bbs.21ic.com/icview-242437-1-1.html


你可能感兴趣的:(编译)