我有一个.go文件,并使用Mac上的go build命令生成了二进制文件。是否有一种方法可以构建在Windows、Linux和IOS上运行的二进制文件?
我知道我们可以通过更改GOOS、GOARCH参数为每个平台构建二进制文件,但我希望有一个单独的go二进制文件,可以在所有平台上运行。请帮助我解决这个问题。
提前感谢您。
我知道我们可以通过更改GOOS、GOARCH参数为每个平台构建二进制文件,但我希望有一个单独的go二进制文件,可以在所有平台上运行。请帮助我解决这个问题。
提前感谢您。
还有一个Unix StackExchange的问题https://unix.stackexchange.com/a/298283/177527,解释了为什么不同的架构需要不同的二进制文件:
原因是代码被编译成特定架构的机器码,而不同处理器家族之间(例如ARM和x86)的机器码非常不同。
如此所述,二进制文件也取决于操作系统https://softwareengineering.stackexchange.com/a/251255:
二进制格式:可执行文件必须符合某种二进制格式,以使操作系统能够正确地加载、初始化和启动程序。Windows主要使用可移植可执行文件格式(Portable Executable format),而Linux使用ELF格式。系统API:程序可能使用库,这些库必须存在于执行系统中。如果一个程序使用Windows API中的函数,则无法在Linux上运行。在Unix世界中,中央操作系统API已经标准化为POSIX:只使用POSIX函数的程序将能够在任何符合Unix系统上运行,例如Mac OS X和Solaris。
randall77/makefat
这样的工具相关联,生成“通用二进制文件”,该文件可在支持其中一个输入可执行文件的任何架构上运行。goreleaser/goreleaser
PR 2572 已经实现了这一功能,这意味着整个过程将完全自动化。