Golang安装go-sqlcipher出错[openssl/rand.h: No such file or directory]

在安装go-sqlcipher时遇到了下面的错误:

go get -v github.com/xeodou/go-sqlcipher
github.com/xeodou/go-sqlcipher
# github.com/xeodou/go-sqlcipher
../github.com/xeodou/go-sqlcipher/sqlite3-binding.c:18280:10: fatal error: openssl/rand.h: No such file or directory
#include <openssl/rand.h>
^~~~~~~~~~~~~~~~
compilation terminated.

提示找不到openssl/rand.h文件,如果你也遇到了同样的问题,可以尝试下面的方案:

darwin
brew install openssl
brew link openssl --force

# 有时候会需要下面两句
export CGO_LDFLAGS="-L/usr/local/opt/openssl/lib"
export CGO_CPPFLAGS="-I/usr/local/opt/openssl/include"

go get -v github.com/xeodou/go-sqlcipher
ubuntu
sudo apt-get install libssl-dev

go get -v github.com/xeodou/go-sqlcipher

如果你想在Ubuntu上编译windows平台使用的go-sqlcipher,那就比较麻烦了,不过也有解决方法:

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

OpenSSL for Windows

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

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

sudo cp -r ./mingw32/* /usr/i686-w64-mingw32/
sudo cp -r ./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的数据库。

    原文作者:路过麦田
    原文地址: https://www.jianshu.com/p/5f155de36c47
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞