我正在尝试为Apache 2.2.32构建APR-util 1.5.6。
我首先使用以下步骤构建OpenSSL 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
我尝试使用以下命令构建APR-util:
./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-crypto --with-openssl=/usr/local/ssl
make
配置成功完成,但make失败并显示以下错误:
/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
请指教。感谢。
答案 0 :(得分: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位Intel计算机,则还应使用enable-ec_nistp_64_gcc_128
。另请参阅OpenSSL wiki上的Compilation and Installation | Options。