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