使用 -fPIC 构建 libcrypto

使用 -fPIC 构建 libcrypto

我正在尝试建立朱莉娅来自源代码,但运行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

测试并报告。

相关内容