我试图重新编译 PHP,但是 ./configure 失败:
configure: error: Cannot find OpenSSL's <evp.h>
我安装了 LibSSL 1.0.0、LibSSL 0.9.8、LibSSL-Dev 和 OpenSSL。
--with-openssl=/usr/include/openssl
当我尝试
--with-openssl
告诉我:
配置:错误:找不到 OpenSSL 的库
问题到底出在哪里?
PS Php 是 5.2.5,操作系统是 Ubuntu
答案1
发生了相同的问题Ubuntu 12.04.1 LTS
,并通过发出以下命令解决了该问题:
sudo apt-get install libcurl4-openssl-dev pkg-config
答案2
要在 Debian wheezy 上构建 php-5.3,您需要执行以下操作来修复此错误。
apt-get install libssl-dev libsslcommon2-dev
然后你需要配置以下内容
./configure --with-libdir=/lib/x86_64-linux-gnu ...
答案3
假设您已经拥有 OpenSSL 库和头文件(在 rpm 系统上后者位于 xxxx-devel 包中)...
问题似乎出在如何configure
解决文件系统中分布的依赖关系。要编译代码,编译器需要知道头文件的位置。要链接代码,链接器需要知道库的位置。
[colin@host]$ configure .... --with-openssl-dir=/usr/include/openssl ....
...
checking OpenSSL dir for FTP... /usr/include/openssl
checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>
[colin@host]$ find /usr/include -name evp.h
/usr/include/openssl/evp.h
include 目录包含包含文件,但是 pkg-config 失败,因为库是不是在 /usr/include/openssl 中,它在 /usr/lib 中
再次以 /usr 作为目录运行 configure:
configure .... --with-openssl-dir=/usr ....
...
checking OpenSSL dir for FTP... /usr
checking for pkg-config... /usr/bin/pkg-config
checking for OpenSSL version... >= 0.9.6
checking for CRYPTO_free in -lcrypto... yes
...
搜索作为参数传递的路径来查找相关资源。
答案4
另一个./configure
可能失败的原因是您没有pkg-config
安装,就像我安装 PHP7 和 Debian Jessie 的情况一样:
sudo apt-get install pkg-config