CentOS-arm64交叉编译环境搭建

2,491 阅读1分钟

前提

Linux物理机内核版本需高于 4.18 。如下:

[root@test ~]$ uname -a
Linux test 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

操作步骤

安装交叉编译工具, 用于编译arm64版本程序

  1. 下载交叉编译工具: releases.linaro.org/components/…, 这里选择文件 gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz 下载
  2. 新建安装目录 mkdir -p /usr/local/ARM-toolchain
  3. 将安装包解压到该目录下 tar -xf gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz -C /usr/local/ARM-toolchain/
  4. 修改 /etc/bash.bashrc 文件,加入如下配置
# Add ARM toolschain path
 if [ -d /usr/local/ARM-toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin ] ; then
  PATH=/usr/local/ARM-toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin:"${PATH}"
 fi
  1. 执行 source /etc/bash.bashrc,使配置生效。
  2. 执行 aarch64-linux-gnu-gcc -v 测试是否可用。
  3. 此后在该系统下可指定使用 aarch64-linux-gnu-gcc 作为交叉编译器
  4. 进入到vis项目目录下,执行 make ARCH=arm64 编译arm版本程序。

安装docker版的qemu, 用于运行测试或打包镜像

  1. 下载安装包: github.com/multiarch/q…
  2. 安装官方文档执行如下操作,安装配置模拟环境:
$ uname -m
x86_64
 
$ docker run --rm -t arm64v8/ubuntu uname -m standard_init_linux.go:211: exec user process caused "exec format error"
 
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
 
$ docker run --rm -t arm64v8/ubuntu uname -m aarch64
  1. 上面步骤完成后,即可在该系统下直接运行arm64版本的可执行文件。
  2. 进入到项目目录下,执行make image ARCH=arm64创建arm版本镜像文件。