温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

M1 Mac怎么使用原生Go与开发环境

发布时间:2021-12-31 11:52:25 来源:亿速云 阅读:177 作者:柒染 栏目:云计算

本篇文章为大家展示了M1 Mac怎么使用原生Go与开发环境,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Go 1.16版将正式支持Apple Silicon M1芯片,即arm64架构的Mac操作系统,目前go 1.16版版本为beta1,只是会在这个基础上再修修bug,改进文档等。

目前有两种方式抢先体验Go1.16:

方式一:编译源代码   

mac上需要确保安装有 rosetta 2(https://support.apple.com/en-us/HT211861)。

安装Go1.15,从1.4开发Go的编译器需要Go本身来编译Go,那么为了编译1.16,我们首先需要amd64版本的Go1.15。

当然Mac上还需要安装一些工具链:当然如果MacOS在升级更新后会出现其它问题比如:xcrun: error: invalid active developer path, missing xcrun

我们同样使用下面命令可以解决:

xcode-select --installsudo xcode-select -switch /
mkdir $HOME/gorootscd $HOME/gorootswget https://dl.google.com/go/go1.15.6.darwin-amd64.tar.gztar xzf go1.15.6.darwin-amd64.tar.gz

获取Go的最新源代码,clone出来之后目前master分支便是 1.16 的预发布分支。

cd $HOME/gorootsgit clone https://go.googlesource.com/go gosource

要编译go的话,需要先预编译 bootstrap 响应的工具链,这个工具链本身也是需要是arm64版,不然最后make出来的还会是x86。

cd $HOME/goroots/gosource/srcarch --x86_64 env GOROOT_BOOTSTRAP=$HOME/goroots/go GODEBUG=asyncpreemptoff=1 GOOS=darwin GOARCH=arm64 ./bootstrap.bash

注意上面的编译环境变量参数中有 GODEBUG=asyncpreemptoff=1 ,这是因为我们的go 1.15是amd64版,直接在m1 mac中运行时需要依赖 rosetta 2,而目前似乎rosetta 2对于go的协程异步抢占还有bug,因此需要关闭;否则编译时会死锁并出现错误:

rosetta error: ulock_wait failure: 105

完成这步后,我们便可在 $HOME/goroots/go-darwin-arm64-bootstrap 路径下获得编译完整go的arm64工具链。

最后一步编译arm64原生go

cd $HOME/goroots/gosource/srcarch --arm64e env GOROOT_BOOTSTRAP=$HOME/goroots/go-darwin-arm64-bootstrap ./make.bash
export  PATH="$PATH:$HOME/goroots/gosource/bin/"

之后就可以正常使用了。

M1 Mac怎么使用原生Go与开发环境

方式二:下载Go1.16beta1

https://golang.org/dl/go1.16beta1.darwin-arm64.pkg

下载安装后可以直接使用:

go versiongo version go1.16beta1 darwin/arm64

开发工具

目前Goland正式版已经开发支持Mac M1的开发。

M1 Mac怎么使用原生Go与开发环境

但是目前Goland的工具链还不能正常的进行DEBUG

解决方法:

git clone https://github.com/oxisto/delve.gitgit checkout -b darwin-arm64-lldbcd delve/cmd/dlv/ go build go installcd $GOPATHcp dlv/Applications/GoLand.app/Contents/plugins/go/lib/dlv/Mac/dlv

将delve进行arm64的编译后,覆盖Goland上的版本,就可以使用了。

M1 Mac怎么使用原生Go与开发环境

ok ,如上我们终于又可以在M1上编写和调试我们的框架代码了 

上述内容就是M1 Mac怎么使用原生Go与开发环境,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI