我有以下問題。我有一個為每個操作系統和 ARCH 構建的簡單 Golang 應用程序。我的意思是操作系統:視窗(GOOS=視窗)OSX(它建立在 OSX 機器上)和拱門:32 (GOARCH=amd64)64 (GOARCH=386)一切都適用于 MAC OS X、Windows Server 2008+。但是當我嘗試在 Windows Server 2008 SP2 上運行已編譯的應用程序時遇到了問題。我收到以下錯誤:App.exe is not a valid Win32 application并在嘗試從 PowerShell 運行時:The specified executable is not a valid application for this OS platform我的申請幾乎是 1:1的如果鏈接將來無法使用,請使用以下代碼:我正在使用 GO 1.14 并通過以下方式構建它:go build -ldflags "-s -w" app.go我也嘗試過go build app.go,但沒有任何改變:(
1 回答

富國滬深
TA貢獻1790條經驗 獲得超9個贊
我相信這是因為從Go 1.13開始,內部鏈接的 Windows 二進制文件指定的 Windows 版本現在是 Windows 7:
由內部鏈接的 Windows 二進制文件指定的 Windows 版本現在是 Windows 7 而不是 NT 4.0。這已經是 Go 所需的最低版本,但會影響具有向后兼容模式的系統調用的行為。這些現在將按照記錄的方式運行。外部鏈接的二進制文件(任何使用 cgo 的程序)總是指定更新的 Windows 版本。
Windows 7 有發布版本NT 6.1
,Windows Server 2008 有發布版本NT 6.0
(來源)。所以很簡單,Windows Server 2008 不滿足構建二進制文件所需的最低 Windows 版本。
如果您需要支持 Windows Server 2008,請嘗試使用 Go 1.12 構建它。
- 1 回答
- 0 關注
- 485 瀏覽
添加回答
舉報
0/150
提交
取消