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

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

Solutions Collecting From Web of "链接到所有链接到一个共同的静态库的多个共享库"

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

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

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

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