1、简介

交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码。本指南主要内容为在非ARM架构服务器环境下搭建ARM的GCC编译环境,编译基于ARM架构的应用软件。交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的GCC相同。

搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出ARM架构下Linux系统所需的操作系统、应用程序等,然后再上传到ARM服务器执行。

2、环境

类别

版本

配置

备注

ARM测试服务器

CentOS7.5

ARM通用计算增强型 | rc3.xlarge.4 | 4vCPUs | 14GB

华为云官网正在公测

x86编译服务器

CentOS7.5

2vCPUs|4GB|s3.large.2

 

1.在华为云官网购买https://www.huaweicloud.com/product/ecs.html

2.本地服务器部署Centos7.5

x86编译服务器

Ubuntu16.04

2vCPUs|4GB|s3.large.2

1.在华为云官网购买https://www.huaweicloud.com/product/ecs.html

2.本地服务器部署Ubuntu16.04

交叉编译器

arm-linux-gcc

 

5.5.0

https://releases.linaro.org/components/toolchain/binaries/5.5-2017.10/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz

3、交叉编译器安装(x86服务器)

3.1.安装标准的C开发环境

执行以下命令:
Ubuntu: apt-get install build-essential
CentOS: yum groupinstall Development Tools

3.2.在/usr/local下建立名为ARM-toolchain的文件夹

mkdir   /usr/local/ARM-toolchain

3.3 下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz

    可以通过wget的形式下载

cd   /usr/local/ARM-toolchain
wget https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz

     也可以从网页上下载后上传到/usr/local/ARM-toolchain目录下。交叉编译工具链的地址在

https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/

      下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz

下载完成后,解压tar包

tar -xvf   gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz

3.4.配置环境变量

修改配置文件,在配置文件的最后一行加入路径配置:
Ubuntu:vim /etc/bash.bashrc 
# Add ARM toolschain path
PATH= /usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin:"${PATH}"
CentOS: vim /etc/profile
# Add ARM toolschain path
export   PATH=$PATH:/usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin

3.5.环境变量生效与测试

执行以下命令:
Ubuntu:source /etc/bash.bashrc 
         aarch64-linux-gnu-gcc  -v
执行上面的命令,显示arm-linux-gnueabi-gcc -v信息和版本
CentOS: source /etc/profile
         aarch64-linux-gnu-gcc  -v
执行上面的命令,显示arm-linux-gnueabi-gcc -v信息和版本

4、测试

4.1.在x86服务器交叉编译

1、创建hello.c
执行:vim hello.c
#include <stdio.h>
int main(void)
{
            printf("hello linux\n");
          return   0;
}
2.交叉编译
执行:aarch64-linux-gnu-gcc -o arm-hello hello.c

4.2.测试执行

1、在x86服务器上测试
执行:chmod +x arm-hello
执行:./arm-hello
页面显示:-bash: ./arm-hello: cannot   execute binary file
 
2. 拷贝执行文件至ARM服务器
执行:chmod +x arm-hello
执行:./arm-hello
页面显示:hello linux

 

5、参考信息

     交叉编译指导: https://releases.linaro.org/components/toolchain/binaries/



6、FAQ

     待补充