/usr/local/ssl/lib/libcrypto.a:无法读取符号:错误值

/usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value

因此,在今晚对这个问题进行了详尽的研究之后,我仍然感到困惑。我是 运行 Debian Wheezy,我正在尝试让 curl 支持 ssl,但它显然拒绝这样做。我试图删除 OpenSSL 和 Curl 的所有痕迹。然后使用 apt-get install OpenSSL,它会安装 "OpenSSL 1.0.1e"。然后我去尝试从源代码编译 curl,我想也许 apt-get 只是愚蠢地安装了 curl。我尝试使用它进行配置。

./configure --with-ssl LDFLAGS="-ldl"

因为它会以其他方式传递一些错误。如果没有 LDFLAGS,我会在我的日志中得到这个。 config.log 但正如我所说,在启用 LDFLAGS 的情况下,我能够实际创建配置,但是当我开始制作时......好吧......那时候一切似乎都崩溃了,她不会安装。

/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(ecp_nistz256.o): relocation R_X86_64_32 against `.rodata.str1.1' 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: error: ld returned 1 exit status
make[2]: *** [libcurl.la] Error 1
make[2]: Leaving directory `/home/openssl/curl-7.27.0/lib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/openssl/curl-7.27.0/lib'
make: *** [all-recursive] Error 1

经过一番研究,有人建议使用 -fPIC 构建 OpenSSL。所以我从系统中清除了 OpenSSL 并尝试从源代码安装,选择安装版本 1.0.2 从此 link https://www.openssl.org/source/openssl-1.0.2.tar.gz

这实际上进行得很顺利,我确保包含 -fPIC 标志。然后我再次安装 Curl,但仍然出现此错误……这很奇怪……所以现在我坐在这里挠头。我已经卸载、重新安装、重新编译和安装并完成了所有我能想到的事情,但我仍然很困惑。

抱歉,如果我今晚的格式很糟糕,那对我来说已经很晚了。但如果有人能帮助我,我将不胜感激。

/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(ecp_nistz256.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value

使用 -fPIC 重建 OpenSSL 的本地副本。本地副本位于 /usr/local/ssl/lib/.

我在 Fedora 上也看到过这个问题。有时您可以使用 export CFLAGS=-fPIC 修复它。其他时候你必须修改 Makefile.org 所以它现在。

./config shared CFLAGS=-fPIC

重新编译你的 openssl