前言

交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。

其基本特点是:

1、它肯定是一个 GCC 编译器。
2、这个 GCC 编译器是运行在 X86 架构的 PC 上的。
3、这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可执行文件是在 ARM 芯
片上运行的。
 

正文

安装交叉编译器

交叉编译器有很多种,这里使用的是 Linaro 出品的GCC交叉编译器。

1.下载网址(因为兼容原因,这里并不是最新版本):Linaro Releases

Android交叉编译环境下怎样编译自己的c代码 安卓交叉编译工具_linux

 这里根据自己安装的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

Android交叉编译环境下怎样编译自己的c代码 安卓交叉编译工具_ubuntu_02

 修改之后,重启Ubuntu系统,交叉编译工具链(编译器)就安装成功了。

安装相关库

sudo apt-get install lsb-core lib32stdc++6

等待安装结束即可

交叉编译器验证

arm-linux-gnueabihf-gcc -v

如果交叉编译器安装正确的话就会显示版本号:

Android交叉编译环境下怎样编译自己的c代码 安卓交叉编译工具_物联网_03

可以看出当前交叉编译器的版本号为 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

Android交叉编译环境下怎样编译自己的c代码 安卓交叉编译工具_ubuntu_04

 上边的结果显示安装正确

file led.o

Android交叉编译环境下怎样编译自己的c代码 安卓交叉编译工具_linux_05

可以看到 led.o 是 32 位 LSB 的 ELF 格式文件,目标机架构为 ARM,说明我们的交叉编译器工作正常。