window 下golang 编译 sqlite3

时间:2022-10-11 05:27:54

window 下 golang 编译sqlite3

问题描述

日前想在window 下面用golang 访问sqlite3, 通过搜索发现下面的package 比较合适:

github.com/mattn/go-sqlite3

使用go get 下载之后,在cygwin 下面编译,发现无法编译,会报如下的错误:

$ go build testc
testc
windows_amd64\link.exe: running gcc failed: exit status 1
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lmingwex
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lmingw32
collect2: error: ld returned 1 exit status

问题解决

通过cygwin 的setup 安装程序, 选择安装MinGW-64 gcc, 之后设置cgo 编译器。

$ export CC=x86_64-w64-mingw32-gcc

之后编译既可以解决这个问题

$ go build testc

编译器名称 用途
x86_64-w64-mingw32-gcc 编译64 bit window 程序
i686-w64-mingw32-gcc 编译32 bit window 程序
x86_64-pc-cygwin cygwin 下的gcc

cygin 和 MinGW 的区别就不在这里累述了!
这个问题应该可以直接下周MinGW 的环境编译解决,只是笔者对于cygwin 工作环境依赖很大,所以就在这个环境下面解决这个问题了。