5

通常我会搜索很多内容并阅读很多内容来解决我的问题,但是对于这个特定的问题,它的效率很低。

我正在运行安装了 LAMP 堆栈的 64 位 Ubuntu Linux 服务器,并且遇到了 libcurl 不支持 SSL 的问题,而 OS 二进制文件确实支持 SSL。PHP只是无法读取它。当我搜索解决方案并尝试在安装 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 参数无济于事。

4

3 回答 3

5

好的,很抱歉没有在 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。

于 2013-08-07T09:14:20.890 回答
3

作为更通用的答案,当您尝试编译的库正在寻找依赖项的共享库时,通常会遇到此问题,但依赖项本身是仅使用静态库支持构建的。

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

于 2015-07-26T08:17:49.720 回答
1

也执行命令,

make clean
于 2015-07-15T12:52:02.847 回答