我正在尝试在装有 OS X 10.4.11 Tiger 的 Mac PPC Powerbook 上构建 ClamAV 99.2。无论我尝试了各种标志和配置参数,ClamAV 配置脚本总是以以下几行停止:
checking for EVP_EncryptInit in -lcrypto... yes
checking for X509_VERIFY_PARAM_new in -lssl... no
configure: error: Your OpenSSL installation is missing the X509_VERIFY_PARAM function.
Please upgrade to a more recent version of OpenSSL.
以下是我采取的步骤,主要来自非常有用的http://www.gctv.ne.jp/~yokota/clamav/(描述了各种 Mac OS X 版本上的 ClamAV 安装过程):
- 安装了最新的 llvm-gcc (llvm-gcc4.2-2.3-ppc-darwin8.11.0)
- 使用 Macports 安装 bzip2
- 安装 pcre2-10.22
- 安装了openssl-1.0.2j
$PATH 是(在新行中增加可读性)
/usr/local/ssl/bin:
/usr/local/llvm-gcc4.2-2.3-ppc-darwin8.11.0/bin:
/opt/local/bin:
/opt/local/sbin:
/bin:
/sbin:
/usr/bin:
/usr/sbin
我阅读了 openssl 提供的所有文档和说明,以了解系统规范,包括
- https://wiki.openssl.org/index.php/Compilation_and_Installation#OS_X
- 在包含的问题文件和 comments.gmane.org/gmane.comp.encryption.openssl.user/47242 中建议在 openssl 中进行 Makefile-edits
基本上,openssl 安装了有和没有 hack,有没有设置特殊的配置参数,比如 no-shared no-asm no-ssl2 no-ssl3。而且由于我做了 make && make test 并且所有测试(包括 x509-stuff)总是通过,我相信 openssl 已完全安装并正在使用中,如所示
$ openssl version
OpenSSL 1.0.2j 26 Sep 2016
和
$ which openssl
/usr/local/ssl/bin/openssl
因此,显然 Clamav要么看错了地方,问了错误的问题,要么依赖于我看不到的东西。或者系统中甚至可能依赖于旧的原始openssl?如果是这样,我该如何解决?
配置 ClamAV 已通过以下命令的不同部分组合完成,并且最终全部完成,不费吹灰之力:
CFLAGS="-O3"
CXXFLAGS="${CFLAGS}"
CPPFLAGS="-I/usr/local/include -I/usr/include -I/usr/local/pcre2/include -I/usr/local/ssl/include -DSSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION=0x0010"
LDFLAGS="-L/opt/local/lib -L/usr/local/lib -L/usr/lib -L/usr/local/ssl/lib"
OPENSSL_INCLUDE_DIR=/usr/local/ssl/include/openssl
DEP_OPENSSL_INCLUDE=/usr/local/ssl/include/openssl
OPENSSL_LIB_DIR=/usr/local/ssl/lib
OPENSSL_ROOT_DIR=/usr/local/ssl
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
C_INCLUDE_PATH=/usr/local/ssl/include/openssl
CC=/usr/local/llvm-gcc4.2-2.3-ppc-darwin8.11.0/bin/powerpc-apple-darwin8-gcc-4.2.1
./configure --with-openssl=/usr/local/ssl \
--with-ssl=/usr/local/ssl --with-pcre=/usr/local/pcre2 --enable-llvm \
--prefix=/usr/local/clamXav --build=powerpc-apple-darwin`uname -r`
最后,config.log告诉我以下内容:
configure:18017: checking for X509_VERIFY_PARAM_new in -lssl
configure:18042: /usr/local/llvm-gcc4.2-2.3-ppc-darwin8.11.0/bin/powerpc-apple-darwin8-gcc-4.2.1 -o conftest -I/usr/local/ssl/include -I/usr/local/include -I/usr/include -I/usr/local/pcre2/include -I/usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -lz conftest.c -lssl -lcrypto -lz >&5
/usr/bin/ld: Undefined symbols:
_X509_VERIFY_PARAM_new
collect2: ld returned 1 exit status
configure:18042: $? = 1
configure: failed program was:
| /* confdefs.h */
在 unix.stackexchange.com/questions/274126/openssl-installation-is-missing-the-x509-verify-param-function 有一个相关问题,但 OP 从未提供过他被要求提供的信息以及操作系统不同,那就是为什么我在这里问。
那么如何定义缺失的符号呢?有人可以给我一个提示吗?提前非常感谢。