Golang 二进制文件是可移植的吗?
Are Golang binaries portable?
假设我主要是 Linux 用户,但我正在用 Go 开发一个我想跨平台的应用程序。我四处搜索,但我似乎找不到可以免除以下问题的信息:
- 如果我
go install
我的 amd64 Ubuntu 系统上的二进制文件,它是否也可以在 其他人的 64 位 Ubuntu/Debian 系统上运行?
- 我如何使用
go install
构建一个 x86_64 二进制文件,它也将 运行 在 32 位 Debianlikes 上开箱即用?
- 如果我必须使用 Windows 来制作一个将 运行 在 Windows 上的二进制文件,我怎样才能确保即使我的 Windows 系统是 64-位可执行文件将为 x86_64?
构建
我的问题实际上归结为,"how static/portable is go's linker/compiler?"
- 是的,会的;基本上所有为 64 位编译的二进制文件都是如此 Linux,而不仅仅是那些用 Go 编写的二进制文件(除了共享库,Go 不依赖它)
- 您可以在构建之前设置
GOOS
和 GOARCH
环境变量:GOOS=windows GOARCH=386 go build
(或 go install
或其他)等
- 默认情况下,将为您 运行 的系统构建一个二进制文件,但这不是必需的 - 请参阅 2
假设我主要是 Linux 用户,但我正在用 Go 开发一个我想跨平台的应用程序。我四处搜索,但我似乎找不到可以免除以下问题的信息:
- 如果我
go install
我的 amd64 Ubuntu 系统上的二进制文件,它是否也可以在 其他人的 64 位 Ubuntu/Debian 系统上运行? - 我如何使用
go install
构建一个 x86_64 二进制文件,它也将 运行 在 32 位 Debianlikes 上开箱即用? - 如果我必须使用 Windows 来制作一个将 运行 在 Windows 上的二进制文件,我怎样才能确保即使我的 Windows 系统是 64-位可执行文件将为 x86_64? 构建
我的问题实际上归结为,"how static/portable is go's linker/compiler?"
- 是的,会的;基本上所有为 64 位编译的二进制文件都是如此 Linux,而不仅仅是那些用 Go 编写的二进制文件(除了共享库,Go 不依赖它)
- 您可以在构建之前设置
GOOS
和GOARCH
环境变量:GOOS=windows GOARCH=386 go build
(或go install
或其他)等 - 默认情况下,将为您 运行 的系统构建一个二进制文件,但这不是必需的 - 请参阅 2