/usr/bin/ld: libcrypto.a(wp_block.o): 重定位 R_X86_64_32S 对 `.rodata' 制作共享对象时不能使用;使用 -fPIC libcrypto.a(wp_block.o) 重新编译:添加符号时出错:值错误
实际上,这意味着您正在构建一个共享对象,但您没有指定-fPIC
. PIC 是与位置无关的代码,它确保地址是相对于程序计数器的,因此代码可以很容易地重新定位(模块的基地址可以很容易地更改,并且可以正常工作)。
我相信我在 Fedora 上看到过这个问题。由于您声称您正在使用它,请CFLAGS
尝试以下操作:
$ make clean && make dclean
$ export CFLAGS="-fPIC"
$ ./config shared no-ssl2 ...
$ make
...
这make clean && make dclean
将确保清除所有工件(包括旧目标文件)。
较新版本的 OpenSSL 响应make distclean
,而不是make dclean
.
我不确定 libcrypto.a 是什么,但显然它是 openssl 的一部分。
这是 OpenSSL 放置加密和帮助程序(如 AES、Cameilla、SHA、大整数等)的库libssl.a
,是 SSL 和 TLS 的所在。libssl.a
取决于libcrypto.a
.
较新版本的 OpenSSL 安装后无法找到其共享库。另请参阅问题 3993,libssl.so.1.1:无法在 OpenSSL 错误跟踪器中打开共享对象文件。
您想使用静态链接,这样库就不会破坏您的可执行文件。如果是这样,那么您可能想在 Makefile 中找到 and 的用途-lssl
,-lcrypto
并将它们更改为-l:libssl.a
and -l:libcrypto.a
。