我有一个问题困扰着我。我认为我以前遇到过类似的问题,但是在互联网上找不到相关信息。
假设我有:
- 一个“common”库和两个不同的静态库:libcommon1.2.a和libcommon1.3.a。
- 一个“extra-common”库,使用libcommon1.2.a并从中提供新的静态库。
- 一个最终应用程序,使用最新的“common”(libcommon1.3.a)和最新的“extra-common”(“common”和“extra-common”链接到应用程序)。
如果在“common”v1.3和v1.2之间仅添加了新组件,那么一切应该都没问题,对吗?
如果“common”v1.3更改了“extra-common”使用的API,则在将“extra-common”与其余应用程序链接时可能会出现缺少符号问题。
如果“common”v1.3保持与v1.2相同的API,但更改了一些内部内容,是否可能在运行时发生崩溃(由于对象大小的更改或可能由于vtable的更改等)?
您能否向我发送一些术语,我可以通过谷歌搜索,一些可能导致运行时崩溃的情况或一些文章链接?类似“库依赖中的钻石问题”这样的术语是否存在?
我将非常感激任何帮助。