前提
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版本程序
- 下载交叉编译工具: releases.linaro.org/components/…, 这里选择文件
gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz下载 - 新建安装目录
mkdir -p /usr/local/ARM-toolchain - 将安装包解压到该目录下
tar -xf gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz -C /usr/local/ARM-toolchain/ - 修改
/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
- 执行
source /etc/bash.bashrc,使配置生效。 - 执行
aarch64-linux-gnu-gcc -v测试是否可用。 - 此后在该系统下可指定使用
aarch64-linux-gnu-gcc作为交叉编译器 - 进入到vis项目目录下,执行
make ARCH=arm64编译arm版本程序。
安装docker版的qemu, 用于运行测试或打包镜像
- 下载安装包: github.com/multiarch/q…
- 安装官方文档执行如下操作,安装配置模拟环境:
$ 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
- 上面步骤完成后,即可在该系统下直接运行arm64版本的可执行文件。
- 进入到项目目录下,执行
make image ARCH=arm64创建arm版本镜像文件。