我有一个静态链接的共享对象(a.so)(s.so)。 b。还有s.so。
的静态链接a.so在b.so上执行dlopen会不会在两者之间分享“s.so”代码?
.so建立在RedHat linux上的gcc 4.1上。
s.so是针对a.so和b.so编译的,带有-Bstatic和--no-whole-archive选项。
答案 0 :(得分:3)
静态库代码(s。 a )永远不会在二进制文件之间共享。
答案 1 :(得分:2)
每当您与静态库链接时,您使用的函数的代码都来自静态库,并放在您正在生成的可执行文件或共享库中。因此,在您的情况下,每个共享库将包含自己的静态库代码副本。