有个小项目,使用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