针对本地符号'错误重定位R_X86_64_32

时间:2009-07-18 16:02:20

标签: svn openssl

我正在尝试使用Apache支持安装Subversion。我使用apr标记安装了apr-utilsneonOpenSSL--enable-shared。但是,在尝试安装subversion时出现以下错误:

/usr/bin/ld: /usr0/software/openssl/ossl/lib/libssl.a(s23_clnt.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr0/software/openssl/ossl/lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [libserf-0.la] Error 1
make[1]: Leaving directory `/usr0/sources/svn/subversion-1.6.3/serf'
make: *** [external-all] Error 1

在Subversion FAQ中声明如果我收到此错误,我应该使用--enable-shared标志,它应该可以工作。但是,这没有帮助。关于如何解决这个问题的任何想法?

3 个答案:

答案 0 :(得分:5)

我发现问题出在openssl安装上。使用enable-shared重新安装openssl。

答案 1 :(得分:0)

我在其他几个非openssl场景中遇到过这种情况,我发现这通常与没有打开共享库有关。

--enable-shared添加到配置行似乎可以修复它。

答案 2 :(得分:0)

我通过在crypto \ cryptolib.h中向OPENSSL_ia32cap_P添加隐藏属性并重新编译来解决它。

extern unsigned int OPENSSL_ia32cap_P[] __attribute__ ((visibility ("hidden")));