共享对象(.so)静态链接和打开其他共享对象,是它们之间共享的静态库代码吗?

时间:2010-05-27 16:57:05

标签: c++ linux gcc

我有一个静态链接的共享对象(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选项。

2 个答案:

答案 0 :(得分:3)

静态库代码(s。 a )永远不会在二进制文件之间共享。

答案 1 :(得分:2)

每当您与静态库链接时,您使用的函数的代码都来自静态库,并放在您正在生成的可执行文件或共享库中。因此,在您的情况下,每个共享库将包含自己的静态库代码副本。