我正在尝试为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-ssl2
, no-ssl3
和no-comp
。 如果您正在使用64位英特尔机器,则还应该使用enable-ec_nistp_64_gcc_128
。 另请参阅编译和安装| OpenSSL wiki上的选项 。