Ubuntu上交叉编译Windows平台的go-sqlciphe

2018-02-05  本文已影响181人  路过麦田

在上一篇文章中,提到了mac以及ubuntu上编译go-sqlcipher时遇到的问题
Golang安装go-sqlcipher出错[openssl/rand.h: No such file or directory]
在windows平台上编译时也遇到了相同的问题,后来想想还是采用交叉编译的方式吧,这样就不用在系统间切来切去了,而且速度也快,golang本身就支持交叉编译,而且很简单,但是在实践过程中也遇到了一些坑。

首先需要安装gcc-mingw-w64

sudo apt-get install gcc-mingw-w64

完成之后执行

// windows 64位
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc go build

这样就可以进行编译了,但是编译的是windows64位的,如果想编译32位的,需要修改一下

// windows 32位
CGO_ENABLED=1 GOOS=windows GOARCH=386 CC=i686-w64-mingw32-gcc go build

但是go-sqlcipher编译时依然出错,提示openssl/rand.h: No such file or directory 跟mac和linux上提示是一样的,这时就需要安装openssl了,可以下载代码编译,也可以下载编译好的包进行安装

下载源码编译可参照这篇文章

OpenSSL for Windows

当然,下载安装包是最简单的,上面文章的最下边有下载的地址,可下载后进行覆盖即可。

下载后,将解压后的目录中的文件夹复制到gcc-mingw-w64的安装目录即可。

sudo cp -r ./openssl-1.0.0e-mingw32/* /usr/i686-w64-mingw32/
sudo cp -r ./openssl-1.0.0e-mingw64/* /usr/x86_64-w64-mingw32/

然后执行如下命令:

// windows 64位
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc go build

// windows 32位
CGO_ENABLED=1 GOOS=windows GOARCH=386 CC=i686-w64-mingw32-gcc go build

编译可以通过,拷贝编译出的exe文件到windows系统上,也可以运行,并能正常创建sqlcipher的数据库。

上一篇下一篇

猜你喜欢

热点阅读