【问题标题】:64 bit Linux/Ubuntu and openssl issue (could not read symbols: Bad value)64 位 Linux/Ubuntu 和 openssl 问题(无法读取符号:错误值)
【发布时间】:2013-08-08 12:38:44
【问题描述】:

通常我会通过大量搜索和阅读来解决我的问题,但对于这个特定的问题,它的效率非常低。

我正在运行一个安装了 LAMP 堆栈的 64 位 Ubuntu Linux 服务器,并且遇到了 libcurl 不支持 SSL 的问题,而操作系统二进制文件确实支持 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 参数无济于事。

【问题讨论】:

  • 假设你的 lib64 目录中已经有了 ssl,--with-libdir=lib64
  • /usr/local/ssl, usr/local/ssl/include/openssl下没有SSL
  • 它是 64 位 OpenSSL 吗?
  • 不,下载中没有 32 位或 64 位的区别。我从 openss.org 下载的那个在 32 位系统中运行良好。
  • 你拿到 ssl 开发包了吗?

标签: php linux openssl 64-bit lamp


【解决方案1】:

好的,很抱歉没有在 SO 本身中正确搜索。相关主题之一对此问题有答案。 relocation R_X86_64_32 against a local symbol' error

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

./config enable-shared

然后我必须重新安装 cURL

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

然后我必须重新安装 PHP

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

.. 就这样。 PHP cURL 扩展支持 SSL。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      同样执行命令,

      make clean
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-29
        • 2015-03-29
        • 1970-01-01
        • 1970-01-01
        • 2011-11-10
        • 2012-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多