在darwin上为linux交叉编译CGO应用程序



我在OS X上交叉编译Go应用程序以在linux/aamd64上运行时遇到问题。有问题的应用程序正在通过这个vips-go包使用libvips。因此,它正在使用CGO,需要在CGO的支持下进行编译。

我正在运行Go 1.4并运行以下构建命令

GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build

但最终出现链接器错误

ld: unknown option: --build-id=none clang: error: linker command failed with exit code 1 (use -v to see invocation)

我想我可能需要添加某种-ldflags参数,但不确定。

有没有可能以这种方式交叉编译CGO应用程序,或者我需要在目标系统上进行本机构建以避免问题和麻烦?

看看gonative。这允许您交叉编译cgo代码(只要您只是使用stdlib)。

另一种方法是使用docker编译linux二进制文件。

快进到2022年,使用docker将CGO应用程序交叉编译到其他平台是您最好、最干净的选择。构建包含正确的跨平台编译器和C库的docker容器。以下是我如何使用Docker交叉编译我的Cgo应用程序。这是带有码头文件的回购。

最新更新