在Cygwin64上编译cgo lib:“ld:找不到-lmingw32”

时间:2016-05-28 09:28:19

标签: gcc go sqlite cygwin cgo

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

我使用Cygwin64并安装了所有“开发”软件包,因此可以使用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声明了

  

但是,如果你使用go install安装go-sqlite3   github.com/mattn/go-sqlite3,你不需要gcc来构建你的应用程序   再

但如果我使用go install,我会收到相同的错误消息。

$ go version
go version go1.6.2 windows/amd64

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

您也可以从Cygwin安装包mingw64-i686-gcc-core

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

答案 2 :(得分:1)

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

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

  

为了在Windows上使用cgo,您还需要首先安装gcc编译器(例如,mingw-w64)并在使用cgo编译之前在PATH环境变量中安装gcc.exe(等)会工作的。