gpt4 book ai didi

linux - 在 .so 文件中更新动态链接的 .so 文件和在 .so 文件中更新静态链接的 .a 文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:42 25 4
gpt4 key购买 nike

我有一个名为 abc.so 的 .so 文件如果我输入:

ldd abc.so
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f76f9100000)

如果我输入:

ls -l /usr/lib64/libssl.so.10
/usr/lib64/libssl.so.10 -> libssl.so.1.0.1e

为什么它链接到 libssl.so.10 而不是 libssl.so ?当我更新 openssl rpm 时,我注意到:

/usr/lib64/libssl.so.10

仍然存在,但是否有过更新 rpm 会使用类似 libssl.so.11 的情况,在这种情况下,abc.so 中使用的动态链接文件会过时吗?

此外,如果我有 def.so 其中包含:

/usr/lib/libssl.a(libssl64.so.0.9.8)

因为它是静态链接的,这是否意味着无论 libssl.a 是什么版本,因为它是静态链接的,它总是使用 libssl64.so.0.9.8 ?

最佳答案

Why is it linking to libssl.so.10 instead of libssl.so ?

在 linux 上,允许多个同名的 DSO,因此您可以(如您所说)libssl.so.11 和/或 libssl.so.9libssl.so.10 一起安装。 ldd 只是告诉您 abc.so 链接到 libssl.so.10。这些版本号的更改通常表示向后不兼容,而不是简单的错误修复。

is there ever a case that updating an rpm would use something like libssl.so.11 in which case the dynamically linked file used in abc.so would be out of date?

是可能的,因为再次允许多个库。但是,我希望发行版维护者永远不会在更新中引入向后不兼容的库。

Also, if I have def.so which contains: /usr/lib/libssl.a(libssl64.so.0.9.8)

我不知道你那里有什么。看起来它向我引用了一个共享库。

关于linux - 在 .so 文件中更新动态链接的 .so 文件和在 .so 文件中更新静态链接的 .a 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23368080/

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