背景 链接到标题 最近各大 2B 厂家都在搞国产化,我司也不例外,花费了些时间折腾了下 ARM 服务器,记录下踩坑和使用感受。
本文所使用的开发环境为 CentOS7.6。
编译 链接到标题 使用的第一步是编译自己的软件,我日常使用的软件发布的最小粒度是 RPM,所以我们需要把自己在 X86 上的软件都重新编译一份 ARM64v8 的。
Python 链接到标题 在预期中,Python 应该是最简单的,直接编译 RPM 就好,我在之前博客《RPM 常用构建方式》 中提到过,对于 Python 来说,最简单的是通过 FPM 来构建 RPM,但是这里有两个坑。
Python 软件是否依赖了 C/C++ ,如果依赖了,那么需要在 ARM 机器上使用 FPM 的时候编译构建 RPM 从网上下载的 noarch.rpm ,是否真的是 noarch 的?需要仔细检查(别问我怎么知道的 在我以为一切搞定的时候,想起来还有个服务是需要机器学习等第三方库的,是使用 conda 安装的。 好嘛,完蛋了,折腾几个小时下来结论是 conda 对于 ARM64 几乎处于不支持的状态。最后也没搞定。
Golang 链接到标题 最简单的莫过于 Golang 了,在 Golang 1.5 及之后版本,只需要设置 GOOS 和 GOARCH 这两个环境变量就能编译出目标平台的 Go binary 文件。
在官网中我们可以找到支持列表:
$GOOS $GOARCH … … linux 386 linux amd64 linux arm linux arm64 linux ppc64 linux ppc64le linux mips linux mipsle linux mips64 linux mips64le linux s390x … … 比如我的目标平台是 Linux ARM64 ,那么我只需要设置 GOOS=linux GOARCH=arm64 go build 即可。