我正在尝试建立朱莉娅来自源代码,但运行make
返回此错误:
/usr/bin/ld: /usr/local/lib/libcrypto.a(poly1305-x86_64.o): relocation R_X86_64_PC32 against symbol `poly1305_blocks' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
我在使用 libssl 时遇到了类似的错误,因此我将 -fPIC 添加到openssl
Makefile
。但是在使用 libcrypto 时遇到相同错误后,我将 -fPIC 添加到crypto
Makefile
,并再次从源代码构建 openssl。但我无法绕过这个错误。
如何使用 -fPIC 重建 libcrypto?
答案1
别难过,这是 OpenSSL 的一个错误!我在尝试将 OpenSSL 用作共享库时发现了它,希望这个修复能有所帮助 :)
https://github.com/openssl/openssl/issues/744
dot-asm 于 2 月 26 日发表评论
在 crypto/poly1305/asm/poly1305-x86_64.pl 的开头某处,你可以找到
.globl poly1305_init
.globl poly1305_blocks
.globl poly1305_emit
添加以下几行应该会有所帮助
.hidden poly1305_blocks
.hidden poly1305_emit
测试并报告。