我正在尝试在我的Mac上安装Apache Thrift,但我遇到了一个问题。
我按照this page上的安装步骤进行操作,但是当我尝试执行安装libevent
的步骤时,运行make
命令时出现以下错误:
由于找不到'openssl / bio.h'文件,导致致命错误
我已经检查过我正在使用的openSSL版本,它是“0.9.8zg”
关于我应该采取什么措施来解决这个问题?
答案 0 :(得分:41)
我在El Capitan 10.11.6上,我在手动安装mongodb php扩展时遇到了问题。
我按照@ user7059092关于配置阶段的指示解决了这个问题:
$./configure LDFLAGS='-L/usr/local/opt/openssl/lib' CPPFLAGS='-I/usr/local/opt/openssl/include'
答案 1 :(得分:18)
我和其他人一样安装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
出于某种原因,只有在您运行“ link openssl --force ”后, Homebrew自己的pkg-config才知道OpenSSL是自制的:
$ pkg-config --variable=includedir openssl
/usr/local/Cellar/openssl/1.0.2d_1/include
答案 2 :(得分:6)
在安装apache Thrift时我也遇到了这个问题,这就是我为系统设置解决的问题。
我的操作系统是El Capitan(10.11.1),安装了所有最新更新,我使用MacPorts安装openssl(版本1.0.2e 2015年12月3日)。这在/opt/local
中安装了openssl。在任何情况下,请尝试查找bio.h
(我的情况位于/opt/local/include/openssl/bio.h
),您可以告诉您安装openssl的位置。当您在libevent
文件夹中并运行时:
./configure --help
你会看到
--includedir=DIR C header files [PREFIX/include]
由于PREFIX
按照说明/usr/local
,我只需要在/usr/local/include
中创建一个符号链接。
cd /usr/local/include
sudo ln -s /opt/local/include/openssl/ openssl
现在make
执行没有错误。
答案 3 :(得分:3)
你在El Capitan吗?这似乎是我的问题。
Jeremy对这个Puma问题的回答对我有用:
https://github.com/puma/puma/issues/718
我的问题特别与Puma gem有关,但如果在El Capitan上你的问题可能类似。
答案 4 :(得分:1)
在Mac上安装libevent:http://macappstore.org/libevent/
该网站的外卖:
表示openssl错误:
最干净的方法应该是通过设置相应的环境变量告诉编译器使用MacOS的openssl。
您可以在配置阶段执行此操作:
./ configure CXXFLAGS =' -I / usr / local / bin -L usr / local / include'
答案 5 :(得分:0)
我从 Rasmus@netflix.dynomite.build 那里窃取了这个提示,它对我来说是一个不相关的工作问题的魅力:
brew install openssl@1.1 OPENSSL_ROOT=$(brew --cellar openssl)/$(brew list --versions openssl | tr ' ' '\n' | tail -1) ./configure "--with-openssl=$OPENSSL_ROOT" ln -s $OPENSSL_ROOT/include/openssl openssl LIBRARY_PATH=$LIBRARY_PATH:$OPENSSL_ROOT/lib 制作