前言
交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。
其基本特点是:
1、它肯定是一个 GCC 编译器。
2、这个 GCC 编译器是运行在 X86 架构的 PC 上的。
3、这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可执行文件是在 ARM 芯
片上运行的。
正文
安装交叉编译器
交叉编译器有很多种,这里使用的是 Linaro 出品的GCC交叉编译器。
1.下载网址(因为兼容原因,这里并不是最新版本):Linaro Releases
这里根据自己安装的Ubuntu系统位数下载对应的版本即可,我下载的是64位版本。
2.copy下载的文件在Ubuntu系统内,可以参考我的放置路径
这个路径后边可以放置各种工具
/home/allen/linux/tool
3.创建目录
/usr/local/arm
将刚才的文件copy到这个目录
cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/
解压文件,解压的文件夹里面就是我们的交叉编译工具链
tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
然后就是需要修改环境变量,使能该功能:
vi /etc/profile
在最后面输入如下所示内容:
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
修改之后,重启Ubuntu系统,交叉编译工具链(编译器)就安装成功了。
安装相关库
sudo apt-get install lsb-core lib32stdc++6
等待安装结束即可
交叉编译器验证
arm-linux-gnueabihf-gcc -v
如果交叉编译器安装正确的话就会显示版本号:
可以看出当前交叉编译器的版本号为 4.9.4,说明交叉编译工具链安装成功。
使用 Ubuntu 自带的 GCC 编译器,我们用的是命令“gcc”。要使用刚刚安装的交叉编译器的时候使用的命令是“arm-linux-gnueabihf-gcc”,“arm-linux-gnueabihfgcc”的含义如下:
1、 arm 表示这是编译 arm 架构代码的编译器。
2、 linux 表示运行在 linux 环境下。
3、 gnueabihf 表示嵌入式二进制接口。
4、 gcc 表示是 gcc 工具。
为了验证是否安装正确,需要创建一个例子验证一下:
创建目录放置例程
/home/allen/linux/driver/board_driver
上边的结果显示安装正确
file led.o
可以看到 led.o 是 32 位 LSB 的 ELF 格式文件,目标机架构为 ARM,说明我们的交叉编译器工作正常。