为了账号安全,请及时绑定邮箱和手机立即绑定

在 Windows Server 2008 上构建时“不是有效的 Win32 应用程序”

在 Windows Server 2008 上构建时“不是有效的 Win32 应用程序”

Go
HUH函数 2022-06-13 16:13:15
我有以下问题。我有一个为每个操作系统和 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 构建它。


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 528 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号