致命错误:找不到'openssl/bio.h'文件

Lew*_*ric 30 openssl thrift libevent

我正在尝试在我的Mac上安装Apache Thrift,但是我遇到了一个问题.我按照此页面上的安装步骤操作,但是当我尝试执行安装步骤libevent时,运行make命令时出现以下错误:

由于找不到'openssl/bio.h'文件导致致命错误

实际错误的屏幕截图

我检查了我正在使用的openSSL版本,它是"0.9.8zg"

关于我应该怎么做才能解决这个问题的建议?

小智 41

我在El Capitan 10.11.6,我在手动安装mongodb php扩展时遇到了问题.

我按照@ user7059092关于配置阶段的指示解决了它:

$./configure LDFLAGS='-L/usr/local/opt/openssl/lib' CPPFLAGS='-I/usr/local/opt/openssl/include'


Fra*_*nzi 19

我和其他人一样安装Thrift时遇到同样的问题.在我的情况下,我解决了下一个Jira:

https://jira.mongodb.org/browse/CDRIVER-941

另一种方法是,在"brew install openssl"之后,执行"brew link openssl --force",它将头文件安装到 / usr/local/include/openssl.

$ brew install openssl 
$ brew link openssl --force
Run Code Online (Sandbox Code Playgroud)

出于某种原因,Homebrew自己的pkg-config知道OpenSSL只有在你运行" link openssl --force " 后才自制:

$ pkg-config --variable=includedir openssl

/usr/local/Cellar/openssl/1.0.2d_1/include


Bar*_*ten 6

在安装apache Thrift时我也遇到了这个问题,这就是我为系统设置解决它的方法.

我的操作系统是El Capitan(10.11.1),安装了所有最新的更新,我使用MacPorts安装openssl(版本1.0.2e 2015年12月3日).这个安装了openssl /opt/local.在任何情况下,尝试查找bio.h(我的情况是位于/opt/local/include/openssl/bio.h),你可能会告诉你安装openssl的位置.当您在libevent文件夹中并运行时:

./configure --help
Run Code Online (Sandbox Code Playgroud)

你会看到的

--includedir=DIR        C header files [PREFIX/include]
Run Code Online (Sandbox Code Playgroud)

由于PREFIX/usr/local按照说明,我只需要创建一个符号链接/usr/local/include.

cd /usr/local/include
sudo ln -s /opt/local/include/openssl/ openssl
Run Code Online (Sandbox Code Playgroud)

现在make执行没有错误.


jak*_*ork 3

你在埃尔卡皮坦吗?这似乎是我的问题。

杰里米在这个彪马问题上的回答对我有用:

https://github.com/puma/puma/issues/718

我的问题与 Puma gem 特别相关,但如果在 El Capitan 上,您的问题可能类似。

  • 这解决了我的问题,谢谢。具体来说: `gem install puma -- --with-opt-include=/usr/local/opt/openssl/include` (4认同)