gpt4 book ai didi

linux - 链接两个不同版本的库

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:40 25 4
gpt4 key购买 nike

openssl 怎么可能链接到与 curl 相关的其他版本的 libcrypto?在ELF格式文件中定义在哪里?

ldd openssl 给我

libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f5d78c49000)

ldd curl 给我

libcrypto.so.1.0.2 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2 (0x00007fd38571c000)

readelf --dynamic /usr/bin/curl

Dynamic section at offset 0x2fab0 contains 27 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libcurl.so.4]
0x0000000000000001 (NEEDED) Shared library: [libz.so.1]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]

没有列出libcrypto.so.1.1。为什么?

最佳答案

我猜您正在寻找动态部分中的 NEEDED 条目。共享库的 SONAME 是在链接时记录的。

我的结果来自 Fedora 29 x86_64,因此在该平台上,两个包都是针对同一个共享库构建的。您的输出表明 openssl 来自 OpenSSL 1.1.x 包,但 curl 是针对 OpenSSL 1.0.2 构建的。

$ readelf --dynamic /usr/bin/openssl | fgrep NEEDED
0x0000000000000001 (NEEDED) Shared library: [libssl.so.1.1]
0x0000000000000001 (NEEDED) Shared library: [libcrypto.so.1.1]
0x0000000000000001 (NEEDED) Shared library: [libz.so.1]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
$ readelf --dynamic /usr/bin/curl | fgrep NEEDED
0x0000000000000001 (NEEDED) Shared library: [libcurl.so.4]
0x0000000000000001 (NEEDED) Shared library: [libmetalink.so.3]
0x0000000000000001 (NEEDED) Shared library: [libssl.so.1.1]
0x0000000000000001 (NEEDED) Shared library: [libcrypto.so.1.1]
0x0000000000000001 (NEEDED) Shared library: [libz.so.1]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]

关于linux - 链接两个不同版本的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54688999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com