在 Cygwin64 上编译 cgo 库:"ld: cannot find -lmingw32"

Compile cgo lib on Cygwin64: "ld: cannot find -lmingw32"

我正在尝试在 Windows 上使用 cgo 库,即 github.com/mattn/go-sqlite3

我使用 Cygwin64 并安装了所有 "Development" 软件包,因此可以使用 gcc。

但是 运行 go get github.com/mattn/go-sqlite3 结果:

/usr/lib/gcc/x86_64-pc-cygwin/5.3.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lmingwex
/usr/lib/gcc/x86_64-pc-cygwin/5.3.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lmingw32

如果我在 Cygwin 安装程序中搜索 "mingwex" 和 "mingw32",我没有得到任何结果。我是在寻找错误的名称,还是它们在 64 位系统上不可用?

或者是否有更好的方法在 Windows 上使用该库?


请注意,README 指出

However, if you install go-sqlite3 with go install github.com/mattn/go-sqlite3, you don't need gcc to build your app anymore

但如果我使用 go install.

,我会收到相同的错误消息
$ go version
go version go1.6.2 windows/amd64

最终对我有用的(而不是 Cygwin)是从 http://tdm-gcc.tdragon.net/download 下载 TDM MinGW-w64 并设置 PATH 以便使用 C:\TDM-GCC-64\bin 的 gcc。

我也遇到了同样的问题。在我看来,cygwin 与 cgo 并不完全兼容。相反,我使用了 https://mingw-w64.org.

来自 cgo 文档 https://github.com/golang/go/wiki/cgo:

In order to use cgo on Windows, you'll also need to first install a gcc compiler (for instance, mingw-w64) and have gcc.exe (etc.) in your PATH environment variable before compiling with cgo will work.

您还可以从 Cygwin 安装软件包 mingw64-i686-gcc-core

二进制文件将为 /usr/bin/i686-w64-mingw32-gcc.exe,因此您可能需要将其复制为 /usr/bin/gcc.exe