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

时间:2015-01-30 10:54:03

标签: linux ssl curl openssl debian

因此,在今晚对这个问题做了一些详尽的研究后,我仍然感到难过。我正在运行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 https://www.openssl.org/source/openssl-1.0.2.tar.gz

这实际上非常顺利,我确保包含-fPIC标志。然后我再次安装Curl并且仍然得到了这个错误..这很奇怪..所以现在我坐在这里挠挠脑袋。我已经卸载,重新安装,重新编译和安装,并完成了我能想到的各种各样的事情,而且我仍然非常难过。

很抱歉,如果我今晚的格式很糟糕,那对我来说已经很晚了。但如果有人能帮我一把,那就非常感激了。

2 个答案:

答案 0 :(得分:4)

/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所以它的存在。

答案 1 :(得分:1)

使用<script> var name = $("#name").val(); var email = $("#email").val(); var formData = { 'name' : name, 'email' : email }; if(name=='' || email==''){ $("#display").html("Please Enter All The Fields"); } else { $.ajax({ type: "POST", url: "success.php", data: formData, dataType : 'json', // what type of data do we expect back from the server encode : true success: function(data){ console.log(data); if(data == 1) { window.location = "welcome.php"; } else { $("#display").html("Please Enter All The Fields"); } } }); } </script>

重新编译您的openssl