麦克雷

标题: 在M1 Mac上编译使用arm64原生go [打印本页]

作者: Josephon    时间: 4 天前
标题: 在M1 Mac上编译使用arm64原生go
在M1 Mac上编译使用arm64原生go
作者: admin    时间: 4 天前
2020年12月19日更新:go官方已发布1.16 beta版,无需自行编译即可下载安装。

预计2021年2月,go 1.16版将正式支持Apple Silicon(使用arm64架构的M1新芯片的Mac操作系统),但目前可通过下载最新源码并编译,获取原生arm64版的go。

操作在m1 mac mini上完成,go工具链安装在$HOME/goroots路径下。mac上需确保已安装rosetta 2。

首先,下载并安装amd64的go 1.15版本。通常仅需下载即可。

通过clone方式获得go源码。从github.com/golang/go仓库克隆,master分支即为1.16预发布版本。

预编译darwin/arm64工具链。此工具链本身应为arm64版,否则最终编译结果可能为x86。编译过程中需要关闭GODEBUG设置中的asyncpreemptoff参数,以避免因依赖rosetta 2而出现的协程异步抢占bug。

完成编译后,在$HOME/goroots/go-darwin-arm64-bootstrap路径下获取到完整的go arm64工具链。

编译后可使用$HOME/goroots/gosource/bin/go获得arm64版的go。将该路径添加到PATH环境变量中,即可在系统中使用原生go。

性能参考:测试项目gorazor(sipin/gorazor)在windows i7700k CPU下的go test需2.52秒;使用编译出的原生go版本所需时间为0.57秒;使用rosetta 2运行amd64的go 1.15则需0.82秒。




欢迎光临 麦克雷 (https://mavom.cn/) Powered by Discuz! X3.5