溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

M1 Mac怎么使用原生Go與開發(fā)環(huán)境

發(fā)布時(shí)間:2021-12-31 11:52:25 來源:億速云 閱讀:169 作者:柒染 欄目:云計(jì)算

本篇文章為大家展示了M1 Mac怎么使用原生Go與開發(fā)環(huán)境,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

Go 1.16版將正式支持Apple Silicon M1芯片,即arm64架構(gòu)的Mac操作系統(tǒng),目前go 1.16版版本為beta1,只是會(huì)在這個(gè)基礎(chǔ)上再修修bug,改進(jìn)文檔等。

目前有兩種方式搶先體驗(yàn)Go1.16:

方式一:編譯源代碼   

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

安裝Go1.15,從1.4開發(fā)Go的編譯器需要Go本身來編譯Go,那么為了編譯1.16,我們首先需要amd64版本的Go1.15。

當(dāng)然Mac上還需要安裝一些工具鏈:當(dāng)然如果MacOS在升級(jí)更新后會(huì)出現(xiàn)其它問題比如: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 的預(yù)發(fā)布分支。

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

要編譯go的話,需要先預(yù)編譯 bootstrap 響應(yīng)的工具鏈,這個(gè)工具鏈本身也是需要是arm64版,不然最后make出來的還會(huì)是x86。

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

注意上面的編譯環(huán)境變量參數(shù)中有 GODEBUG=asyncpreemptoff=1 ,這是因?yàn)槲覀兊膅o 1.15是amd64版,直接在m1 mac中運(yùn)行時(shí)需要依賴 rosetta 2,而目前似乎rosetta 2對(duì)于go的協(xié)程異步搶占還有bug,因此需要關(guān)閉;否則編譯時(shí)會(huì)死鎖并出現(xiàn)錯(cuò)誤:

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與開發(fā)環(huán)境

方式二:下載Go1.16beta1

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

下載安裝后可以直接使用:

go versiongo version go1.16beta1 darwin/arm64

開發(fā)工具

目前Goland正式版已經(jīng)開發(fā)支持Mac M1的開發(fā)。

M1 Mac怎么使用原生Go與開發(fā)環(huán)境

但是目前Goland的工具鏈還不能正常的進(jìn)行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進(jìn)行arm64的編譯后,覆蓋Goland上的版本,就可以使用了。

M1 Mac怎么使用原生Go與開發(fā)環(huán)境

ok ,如上我們終于又可以在M1上編寫和調(diào)試我們的框架代碼了 

上述內(nèi)容就是M1 Mac怎么使用原生Go與開發(fā)環(huán)境,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI