64位的Linux / Ubuntu和OpenSSL的问题(无法读取符号:值不好)

通常我会search很多东西并阅读很多东西来解决我的问题,但是对于这个特殊的问题,这是非常不利的。

我正在运行一个64位的Ubuntu Linux服务器,我安装了LAMP堆栈,并且libcurl没有SSL支持,而OS二进制文件有SSL支持。 PHP不能读取它。 当我search解决scheme,并尝试执行以下操作以在安装PHP时启用SSL支持,我得到了问题..

./configure .... --with-openssl ... .... /usr/bin/ld: ext/standard/.libs/info.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC ext/standard/.libs/info.o: could not read symbols: Bad value collect2: error: ld returned 1 exit status make: *** [libphp5.la] Error 1 

所以,它突然停了下来。 我试着做–enable-shared –without-pic的参数无济于事。

Solutions Collecting From Web of "64位的Linux / Ubuntu和OpenSSL的问题(无法读取符号:值不好)"

好的,抱歉在SO本身没有正确的搜索。 其中一个相关的话题就对这个问题有了一个答案。 根据本地符号的错误重新定位R_X86_64_32

我所要做的只是在配置期间使用enable-shared选项来重新安装openssl

 ./config enable-shared 

然后我不得不重新安装cURL

 ./configure --with-ssl=/usr/local/ssl --with-zlib 

然后,我不得不重新安装PHP

 ./configure .... --with-openssl --with-curl .... 

..而且做到了。 PHP cURL扩展具有SSL支持。

作为一个更通用的答案,当你试图编译的库正在寻找一个依赖项的共享库时,通常遇到这个问题,但是依赖项本身只是用静态库支持构建的。

解决这个问题的方法是使用共享库支持来重新编译依赖项,通常通过指定–enable-shared标志来配置脚本。

也执行命令,

 make clean