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

所以在今晚就这个问题做了一些详尽的研究后,我仍然难住了。 我正在运行Debian Wheezy,我试图让curl支持ssl,它只是显然拒绝做。 我试图删除OpenSSL和Curl的所有痕迹。 然后使用apt-get安装OpenSSL,安装“OpenSSL 1.0.1e”。 然后我去了,试图从源头上编译curl,想着也许apt-get在安装curl时很傻。 我试图用这个configuration。

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

因为它会通过一些其他的错误。 没有LDFLAGS我会在我的日志中得到这个。 config.log但正如我所说的,在LDFLAGS上,我能够实际上创buildconfiguration,但是当我去做..呃..这就是当这一切似乎打破松散,她不会安装。

 /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 

经过一番研究,有人build议用-fPICbuild立OpenSSL。 所以我从系统中清除了OpenSSL并试图从源代码安装,select从这个链接安装版本1.0.2 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以使其存在。