不能用OpenSSL 1.0.2k构buildAPR-util 1.5.4

我正在尝试为Apache 2.2.32构buildAPR-util 1.5.6。

我首先使用以下步骤构buildOpenSSL 1.0.2k:

./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl make make test make install 

然后我运行这些命令:

 export LD_LIBRARY_PATH=/usr/local/lib export LIBS=-ldl 

我试图使用这些命令来构buildAPR-util:

 ./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-crypto --with-openssl=/usr/local/ssl make 

configuration成功完成,但失败并出现以下错误:

 /bin/sh /usr/local/apr/build-1/libtool --silent --mode=link gcc -g -O2 -pthread -L/usr/local/ssl/lib -release 1 -module -rpath /usr/local/apr/lib/apr-util-1 -o crypto/apr_crypto_openssl.la crypto/apr_crypto_openssl.lo -L/usr/local/ssl/lib -lssl -lcrypto /usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(mem.o): relocation R_X86_64_32S against `.text' can not be used when making a shared object; recompile with -fPIC /usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value collect2: ld returned 1 exit status make[1]: *** [crypto/apr_crypto_openssl.la] Error 1 

请指教。 谢谢。

我首先使用以下步骤构建OpenSSL 1.0.2k:

 ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl make make test make install 

您在此步骤中构建共享对象,因此对象缺少重定位数据。 最终导致:

 /usr/local/ssl/lib/libcrypto.a(mem.o): relocation R_X86_64_32S 

像下面的配置应该清除问题。

与共享对象

 ./config shared --prefix=/usr/local/ssl --openssldir=/usr/local/ssl\ 

在这个配置中,OpenSSL将建立共享对象。 它将为您启用-fPIC标志。

没有共享对象

 ./config -fPIC --prefix=/usr/local/ssl --openssldir=/usr/local/ssl 

在此配置中,您不构建共享对象。 您必须启用-fPIC标志。


还有其他的OpenSSL配置标志你应该考虑,如no-ssl2no-ssl3no-comp 。 如果您正在使用64位英特尔机器,则还应该使用enable-ec_nistp_64_gcc_128 。 另请参阅编译和安装| OpenSSL wiki上的选项 。