Stan Blog

學習過程中的一些記錄

[Go] macOS on arm64 requires codesigning

Context

MacOS version: 14.6.1

Go version: 1.22

今天在寫 golang 的時候發現的一個問題

go run main.go 可以正常執行,但要執行 go build 建出來的 binary 檔就會無法執行

go-binary-issue-test-2

go-binary-issue-test-1

file 指令檢查 binary 檔架構

go-binary-issue-test-7

持續做了交叉測試,發現只有 server.Init() 會發生,test1.Init() 是正常的

go-binary-issue-test-6

go-binary-issue-test-5

中間也試過重新啟動電腦、gvm 重新安裝 go 版本,這兩個方法都無效

排查

因為 process 一啟動就被 kill 了,需要更多錯誤訊息

  1. 使用 dmesg 工具檢查對應 pid 錯誤訊息,發現有 CODE SIGNING 相關的字眼
  2. CODE SIGNING 當關鍵字爬文
  3. 找到 這篇 issue,裡面提到可以透過 codesign -f -s - /Users/nils/Work/go/bin/gopls 暫時解決

go-binary-issue-test-3

測試

透過 codesign 指令對 build 出來的 binary 檔進行重新簽名

go-binary-issue-test-4

成功啦!

爬了很多 go 相關 isuue,有幾派說法,有的說是編譯工具的問題,有的是說 apple arm64 有 bug

目前只找到 workround,還不確定確切的發生原因是什麼

Ref:

Comments