我有以下问题。我有一个为每个操作系统和 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 关注
- 528 浏览
添加回答
举报
0/150
提交
取消