php小編西瓜在處理amd64建置go二進位時發現了一個問題。在mac系統中,使用uname取得處理器架構會導致錯誤的結果。這個問題可能會對編譯和建置過程產生影響,因此需要注意。正確的獲取處理器架構的方法是透過go的內建函數runtime.GOARCH來實現。這樣可以避免因uname導致的錯誤,確保編譯和建置的準確性。
我有一個 golang 服務,需要取得處理器的架構類型
archCmd := exec.Command("uname", "-m") arch, _ := archCmd.CombinedOutput()
我在 Intel 和 Arm 機器上運行相同的二進位。二進位檔案是用
建構的GOOS=darwin GOARCH=amd64
在 ARM 機器上,這會取得 x86_64。自從我使用 GOARCH=amd64 構建以來,似乎就發生了這種情況。但我不確定為什麼會發生這種情況。 如果我想在 intel 和 arm 機器上運行相同的建置二進位文件,我的替代方案是什麼?
引用@hrdy
描述此問題的註解:
引用單獨的超級使用者答案:https://www.php.cn/link/211fff9e65c0e47a790c629116e32996
#...這將需要一些條件邏輯來偵測作業系統以及解析以偵測 Apple CPU 類型。如果此字串值發生更改,這可能會在將來中斷。
archCmd := exec.Command("sysctl", "machdep.cpu.brand_string") arch, _ := archCmd.CombinedOutput()
再次,歸功於 @selalerercapitolis
的答案連結。
以上是當為 amd64 建置 go 二進位時,使用 uname 在 mac 中取得處理器架構會給出錯誤的結果的詳細內容。更多資訊請關注PHP中文網其他相關文章!