win10安装go-sqlcipher出现报错:fatal error: openssl/rand.h: No such file or directory

实用知识 1年前 (2023) 工具猫
1,224 0

最近golang项目里用到sqlite3,想给数据库加个密,于是找到了go-sqlcipher这个库,本来以为用一条命令就能解决:go install github.com/xeodou/go-sqlcipher

没想到报错了

# github.com/xeodou/go-sqlcipher
sqlite3-binding.c:24328:10: fatal error: openssl/rand.h: No such file or directory
#include <openssl/rand.h>

百度找了半天没找到解决方案,然后在GitHub Issues 找到部分线索,最后终于解决了,整理出来做个备忘。

一、64位windows10解决方法:

先下载openssl:http://slproweb.com/products/Win32OpenSSL.html

找到“Win64 OpenSSL v3.0.8”,不要下载  Light 版,下载后安装,

我是安装在这个目录:D:\Program Files\OpenSSL-Win64

安装好以后,安装目录下找到lib文件夹,进去找到这两个文件:“libcrypto.def”和“libcrypto.lib”,把它们拷贝到gcc目录(我电脑上的路径是D:\Program Files\mingw-w64\x86_64-w64-mingw32\lib)的lib下,然后把“libcrypto.lib”改成 “libcrypto.a”。

再回到openssl的安装目录,找到include文件夹下的openssl文件夹,整个文件夹拷贝到gcc目录的include下(我电脑上的路径是D:\Program Files\mingw-w64\x86_64-w64-mingw32\include)。

然后再命令行下运行刚开始的go安装命令就成功了。

 

二、32位windows10解决方法:

同样也是先下载openssl,32位要下载安装“Win32 OpenSSL v3.0.8”这个文件。

32位系统的两个关键文件是在安装目录的lib\MinGW文件夹下:lib\MinGW\libcrypto.def 和 lib\MinGW\libcrypto.dll.a

把它们拷贝到gcc目录(我电脑上的路径是D:\Program Files\mingw-w64\x86_64-w64-mingw32\lib)的lib下,然后把“libcrypto.dll.a”改成 “libcrypto.a”。

再回到openssl的安装目录,找到include文件夹下的openssl文件夹,整个文件夹拷贝到gcc目录的include下(我电脑上的路径是D:\Program Files\mingw-w64\x86_64-w64-mingw32\include)。

然后再命令行下运行刚开始的go安装命令就成功了。

参考资料:https://github.com/xeodou/go-sqlcipher/issues/27