构建 SQLCipher 时出现致命错误(未找到 'openssl/rand.h' 文件)

Fatal error in building SQLCipher ('openssl/rand.h' file not found)

我正在尝试在我的 mac 上构建 SQLCipher,但在 运行 make 之后出现致命错误。

系统:OS X El Capitan 我按照 this 说明安装了 openssl。

在 运行 make 之前,我使用命令 libcrypto.a 静态链接

./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" \
    LDFLAGS="/usr/local/opt/openssl/lib/libcrypto.a"

我收到错误

sqlite3.c:18280:10: fatal error: 'openssl/rand.h' file not found
#include <openssl/rand.h>
         ^
1 error generated.
make: *** [sqlite3.lo] Error 1

确保 brew 已正确链接到 openssl 库。 运行 这个命令

 brew link openssl --force

然后再试一次。

我的机器上没有 brew,但我用不同的方式修复了这个错误。在 Xcode 中,我转到 Preferences->locations->"source trees"-> 点击 +,将 OPENSSL_SRC 设置为 "full-path-to-openssl-source"

我在尝试安装的 golang 库中遇到了这个问题。当我尝试 运行 go get github.com/xeodou/go-sqlcipher:

时出现以下错误
# github.com/xeodou/go-sqlcipher
project/src/github.com/xeodou/go-sqlcipher/sqlite3-binding.c:18280:10: fatal error: 'openssl/rand.h' file not found

我通过在我的 bash 个人资料中添加以下内容来解决此问题:

export CGO_LDFLAGS="-L/usr/local/opt/openssl/lib"
export CGO_CPPFLAGS="-I/usr/local/opt/openssl/include"

希望这对您有所帮助。

我做了所有这些,但对我有用的是:brew reinstall openssl,当然你应该是 /usr/local 的所有者,以确保这一点:sudo chown -R username /usr/local .

希望这对有需要的人有所帮助。