[Go] macOS on arm64 requires codesigning
Context
MacOS version: 14.6.1
Go version: 1.22
今天在寫 golang 的時候發現的一個問題
用 go run main.go
可以正常執行,但要執行 go build
建出來的 binary 檔就會無法執行
用 file
指令檢查 binary 檔架構
持續做了交叉測試,發現只有 server.Init()
會發生,test1.Init()
是正常的
中間也試過重新啟動電腦、gvm 重新安裝 go 版本,這兩個方法都無效
排查
因為 process 一啟動就被 kill 了,需要更多錯誤訊息
- 使用
dmesg
工具檢查對應 pid 錯誤訊息,發現有CODE SIGNING
相關的字眼 - 用
CODE SIGNING
當關鍵字爬文 - 找到 這篇 issue,裡面提到可以透過
codesign -f -s - /Users/nils/Work/go/bin/gopls
暫時解決
測試
透過 codesign
指令對 build 出來的 binary 檔進行重新簽名
成功啦!
爬了很多 go 相關 isuue,有幾派說法,有的說是編譯工具的問題,有的是說 apple arm64 有 bug
目前只找到 workround,還不確定確切的發生原因是什麼
Ref: