2 回答
TA贡献1798条经验 获得超7个赞
请注意,在 Linux 操作系统上编译的 Go 二进制文件可以在其他 Linux 发行版上运行。
如果 Docker 是一个选项,您可以考虑使用DockerHub上的 Go Docker 映像之一。您可以基于其中一个<go-version>-onbuild映像创建 Dockerfile,或者在您的计算机上构建您的应用程序,然后COPY将二进制文件转移到基于您选择的 Linux 发行版的映像中。
onbuild图像构建并运行您的应用程序。你可以在这里查看它的 Dockerfile 。我看到团队使用第二种方法在 golang-alpine Docker 容器中分别构建和运行应用程序二进制文件以减小生产映像的大小。
否则,您可以使用 Go 内置的交叉编译支持,归结为:
将
GOOS和GOARCH环境变量设置为目标操作系统和体系结构的值。跑步
go build -v YOURPACKAGE
请参阅此处以获取支持GOOS和GOARCH值的列表。
TA贡献2003条经验 获得超2个赞
如果您在 Linux 机器上构建 go 程序,如果您将其标记为 executable,它应该可以在其他地方运行chmod +x /path/to/main.go。
您可以指定构建使用env和go buildcmd 工具为哪个架构(或哪个操作系统)构建,例如:
env GOARCH=arm go build main.go
如果需要,可以指定 Linux
env GOOS=linux go build main.go
请注意,这些是目标环境:
请注意,$GOARCH 和 $GOOS 标识目标环境,而不是您正在运行的环境。实际上,您总是在交叉编译。架构是指目标环境可以运行的二进制文件类型:运行仅 32 位操作系统的 x86-64 系统必须将 GOARCH 设置为 386,而不是 amd64。
有关发行版和架构的完整列表,请参见此处: https ://golang.org/doc/install/source#environment
- 2 回答
- 0 关注
- 458 浏览
添加回答
举报
