linux - 如何将我的 Go 程序从 Mac OS X 交叉编译到 Ubuntu 64 位

标签 linux macos go

正如标题所说,我想知道如何交叉编译我的程序,以便我可以在 Ubuntu 64 位上运行它

我已经进入 /usr/local/go/src 文件夹并运行了

GOOS=linux GOARCH=amd64 ./make.bash --no-clean

一切正常

然后进入我的项目目录并运行 go build -v -a 然后获取已编译的二进制文件并将其移至我的 linux 服务器,但运行时出现此错误:

root@PanicCSGO40:~/test# ./test
-bash: ./test: cannot execute binary file: Exec format error
root@PanicCSGO40:~/test# sudo ./test
./test: 1: ./test: Syntax error: "(" unexpected
root@PanicCSGO40:~/test#

不知道我做错了什么,任何信息都会非常感谢。

我也尝试过使用 GOARCH=386 但仍然遇到相同的错误。谢谢!

This link没有解决我的问题,因为选择的答案是指向博客文章的链接,该链接严重依赖于使用博客作者 bash 脚本进行所有交叉编译,我只是想知道什么正确的做法是,现在我这样做了。

最佳答案

构建命令需要识别目标环境:

$ GOOS=linux GOARCH=amd64 go build -v /path/to/target/package

关于linux - 如何将我的 Go 程序从 Mac OS X 交叉编译到 Ubuntu 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32557438/

相关文章:

macos - GitHub、HTTPS 和 Mac 应用程序

objective-c - 使用 deleteObject : on Core Data store 时的 EXC_BAD_ACCESS (SIGSEGV)

swift - AVCaptureMovieFileOutput 中的自定义文件格式

networking - 使用 ResponseWriter.Write 在 Go 中连接 250 次后出现 "localhost: no such host"

string - 为什么这种从 rune 字符串到整数的转换不起作用?

Linux 下的 C#,WorkingDirectory 无法正常工作

html - 在linux下的firefox浏览器中浏览ftp文件

linux - 仅下载 youtube 视频的一部分,精确到毫秒

Linux平台下PHP gettext返回非utf8字符串

image - 如何使用 Go 为 X11/Wayland 的多个屏幕添加背景图像?