在编译 go-sqlite3使用 mattn/go-sqlite3 时 go.mod 里使用了 github.com/mattn/go-sqlite3 v2.0.3+incompatible 最新版,windows 机器安装了 tdm64-gcc 10.3.0 ,导致编译出错。
错误信息:
# github.com/mattn/go-sqlite3
sqlite3-binding.c: In function 'sqlite3SelectNew':
sqlite3-binding.c:128049:10: warning: function may return address of local variable [-Wreturn-local-addr]
128049 | return pNew;
| ^~~~
sqlite3-binding.c:128009:10: note: declared here
128009 | Select standin;
| ^~~~~~~
分析:
gcc 版本 编译 github.com/mattn/go-sqlite3 v1.14.9
5.1.0 编译 ok
9.2.0 编译 ok
10.3.0 编译 ok
gcc 版本 编译 github.com/mattn/go-sqlite3 v2.0.3+incompatible
5.1.0 编译 ok
9.2.0 编译 ok
10.3.0 编译 ERR
解决方法 1:
目前 有三个版本 tdm64-gcc-5.1.0 ,tdm64-gcc-9.2.0,tdm64-gcc-10.3.0
安装:5.1 或 9.2 即可解决,不安装10.3.0
注意: 使用 tdm64-gcc-9.2.0.exe 安装gcc 9.2.0 ,安装时注意 不要勾选 Check for updated files on the TDM-GCC server , 否则会安装 10.3.0 ,go-sqlite3 v2.0.3 会编译出错
解决方法 2:
使用 github.com/mattn/go-sqlite3 v1.14.9 版本。