gpt4 book ai didi

c - 静态和动态链接同一个库

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:47 24 4
gpt4 key购买 nike

我有一个静态链接到库 (libA.2.0.a) 和动态链接到另一个库 (libB.so) 的程序。 libB.so 还动态链接到旧版本的 libA (libA.1.0.so)。

这个配置可行吗?如果是这样,系统如何知道将 libA.2.0.a 中的符号用于我的程序,将 libA.1.0.so 中的符号用于 libB .so?

最佳答案

是的,这种配置是可能的。

在回答关于系统如何知道如何使用符号的问题时,请记住所有链接都发生在构建时。建成后就不是“符号”的问题了,只是在各个地址调用各种函数。

构建 libB.so 时,它会设置它与 libA.1.0.so 的链接。它不知道也不关心使用它的其他应用程序会做什么,它只知道如何映射自己的函数调用。

在构建应用程序本身时,应用程序链接到 libB.so。无论 libB.so 调用什么,应用程序都完全不知道。该应用程序还静态链接到库,而 libB.so 并不关心。

一个陷阱:如果 libA 使用静态变量,则 libB.so 将有一组静态变量可访问,而应用程序可访问另一组独立的静态变量。

关于c - 静态和动态链接同一个库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1236495/

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