是否可以预编译 Go 项目并在不同的 Linux 发行版上运行

我是 Go 新手,想知道是否可以在我的计算机上构建我的应用程序,然后放在具有不同 Linux 系统的目标机器上并运行而无需编译它或其依赖项?

如何确定二进制文件可以在哪些目标系统上运行?


交互式爱情
浏览 459回答 2
2回答

元芳怎么了

请注意,在 Linux 操作系统上编译的 Go 二进制文件可以在其他 Linux 发行版上运行。如果 Docker 是一个选项,您可以考虑使用DockerHub上的 Go Docker 映像之一。您可以基于其中一个<go-version>-onbuild映像创建 Dockerfile,或者在您的计算机上构建您的应用程序,然后COPY将二进制文件转移到基于您选择的 Linux 发行版的映像中。onbuild图像构建并运行您的应用程序。你可以在这里查看它的 Dockerfile&nbsp;。我看到团队使用第二种方法在 golang-alpine Docker 容器中分别构建和运行应用程序二进制文件以减小生产映像的大小。否则,您可以使用 Go 内置的交叉编译支持,归结为:将GOOS和GOARCH环境变量设置为目标操作系统和体系结构的值。跑步go build -v YOURPACKAGE请参阅此处以获取支持GOOS和GOARCH值的列表。

湖上湖

如果您在 Linux 机器上构建 go 程序,如果您将其标记为 executable,它应该可以在其他地方运行chmod +x /path/to/main.go。您可以指定构建使用env和go buildcmd 工具为哪个架构(或哪个操作系统)构建,例如:env&nbsp;GOARCH=arm&nbsp;go&nbsp;build&nbsp;main.go如果需要,可以指定 Linuxenv&nbsp;GOOS=linux&nbsp;go&nbsp;build&nbsp;main.go请注意,这些是目标环境:请注意,$GOARCH 和 $GOOS 标识目标环境,而不是您正在运行的环境。实际上,您总是在交叉编译。架构是指目标环境可以运行的二进制文件类型:运行仅 32 位操作系统的 x86-64 系统必须将 GOARCH 设置为 386,而不是 amd64。有关发行版和架构的完整列表,请参见此处:&nbsp;https ://golang.org/doc/install/source#environment
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go