美文网首页
Ubuntu上交叉编译Windows平台的go-sqlciphe

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

作者: 路过麦田 | 来源:发表于2018-02-05 18: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的数据库。

    相关文章

      网友评论

          本文标题:Ubuntu上交叉编译Windows平台的go-sqlciphe

          本文链接:https://www.haomeiwen.com/subject/rulizxtx.html