【发布时间】:2021-04-26 19:36:54
【问题描述】:
我想得到一个windows-DLL,但我想在Ubuntu-Linux下编译。
构建一个可执行文件很简单:env GOOS=windows GOARCH=386 go build wrapper.go 生成一个 wrapper.exe,其行为符合预期。
但是使用env GOOS=windows GOARCH=386 go build -buildmode=c-shared wrapper.go 构建DLL 会导致错误:
running gcc failed: exit status 1
gcc: error: unrecognized command line option ‘-mconsole’; did you mean ‘--compile’?
我不希望在windows下安装和运行go,因为我的完整工具链是在Ubuntu下运行的
go version go1.15.6 linux/amd64
【问题讨论】:
-
这似乎是特定于编译器实现的,那么您的
go version和go env是什么? -
另外你安装了哪些 gcc 库来编译到 windows?
-
我目前没有使用它来构建 c 共享库(它可以使用 Go 版本更新),但我过去确实成功地构建了 c 共享库:github.com/tehsphinx/golang_cgo_windows/blob/master/Dockerfile .如果你想快速测试它,它也在 docker hub 上:hub.docker.com/r/tehsphinx/golang_cgo_windows/…
-
让我感到奇怪的是,构建
.exe是有效的,但不是构建.dll
标签: go cross-compiling