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

liv*_*m95 7 c linux linker

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

Cli*_*ord 2

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

  • 至少在 GNU/Linux 下,如果我创建一个链接到静态库 (.a) 的共享库 (.so),我可以从仅链接到共享库的可执行文件访问从静态库中拉入的任何符号。 (.so) 库,所以我非常确定静态库中的符号会传播到共享库的接口。也许事情在其他一些系统上的工作方式有所不同,但我工作过的大多数系统都是使用默认链接器选项的情况。 (4认同)