代码之家  ›  专栏  ›  技术社区  ›  kal

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

  •  1
  • kal  · 技术社区  · 15 年前

    我有一个共享对象(a.so),它已经静态链接(s.so)。b、 所以也有一个s.so的静态链接。

    a、 那么,b.so上的dlopen是否会在两者之间共享“s.so”代码?

    .so是基于RedHat linux上的gcc4.1构建的。

    s.so是针对a.so和b.so编译的,使用-Bstatic和--not whole archive选项。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Ignacio Vazquez-Abrams    15 年前

    静态库代码。 )从未在二进制文件之间共享。

        2
  •  2
  •   anon anon    15 年前

    无论何时链接到静态库,所使用函数的代码都会从静态库中获取,并放置在正在生成的可执行库或共享库中。因此,在您的示例中,每个共享库都将包含静态库中自己的代码副本。