有个小项目,使用sqlite3数据库,需要跨平台编译。我在Mac上开发的,现在编译一份windows平台的。

pre#

编译的参数

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows) GOARCH:目标平台的体系架构(386、amd64、arm) CGO_ENABLED: 是否开启CGO(事实证明交叉编译不支持CGO)

section 1#

首先,我想到的是:

嗯,不出所料:

fatal error: 'windows.h' file not found

嗯,stackoverflow,github…都瞄了一下,各种c库问题,各种解决方法参差不齐。

我这个人比较懒,决定换种解决方法。

section 2#

联想到以前使用sqlite3项目需要交叉编译Linux平台的,我们采用过docker内编译的方法,我这里也尝试一下。

还是存在问题。 那么继续Google一下。

go-sqlite3

有code反应,该如下解决:

之后再次尝试,依然还是同样的问题。

section 3#

Google一番未果,寻求同事帮助。

同事:“这问题我遇到过”

我:“怎么解决的”

同事: “没法解决,用sqlite3,mac上交叉编译不了win的”

我:“。。。”

同事:“装个Win虚拟机,直接在win上编译就OK了”

我:“。。。”

最后,顺利的在win虚拟机内编译成功该程序。

End