繁体   English   中英

链接所有链接到公共静态库的多个共享库

[英]Linking against multiple shared libraries that all linked against a common static library

假设您有两个共享库lib1.so和lib2.so,它们都将libcommon.a静态链接到它们中。 如果要动态链接lib1.so和lib2.so,编译器是否会抱怨模糊的符号引用? 或者编译器是否足够聪明,知道lib1和lib2之间共享libcommon符号,并允许您动态链接两者?

不会发生冲突,因为链接到共享库时,链接器将使用第一个提供符号的共享库中的定义,而不会进一步查看其他共享库。 .a中包含的符号将在两个共享库中导出,但不会发生冲突。

静态库将用于内部解析链接,但外部链接不会传播到共享库接口,因此不会发生冲突。 每个共享库都包含自己的静态库代码副本。

假设两个共享库与不同的静态库链接。 但静态库都包含一个具有相同名称的函数。 会有冲突。

我很确定,因为我有一个tcl / tk应用程序,它加载了两个tcl库(.so)。 这两个库都与openssl库静态链接。 但是版本不同。 运行tcl应用程序时发生分段错误。 我将它追踪到openssl中。 新版本中更改了功能实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM