1、简介
交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码。本指南主要内容为在非ARM架构服务器环境下搭建ARM的GCC编译环境,编译基于ARM架构的应用软件。交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的GCC相同。
搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出ARM架构下Linux系统所需的操作系统、应用程序等,然后再上传到ARM服务器执行。
2、环境
3、交叉编译器安装(x86服务器)
3.1.安装标准的C开发环境
3.2.在/usr/local下建立名为ARM-toolchain的文件夹
3.3 下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz
可以通过wget的形式下载
也可以从网页上下载后上传到/usr/local/ARM-toolchain目录下。交叉编译工具链的地址在
下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz
下载完成后,解压tar包
3.4.配置环境变量
3.5.环境变量生效与测试

4、测试
4.1.在x86服务器交叉编译
4.2.测试执行
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