【问题标题】:Shared objects (.so) static linking and opening other shared object, is the static library code shared between them?共享对象(.so)静态链接和打开其他共享对象,它们之间是否共享静态库代码?
【发布时间】:2010-05-27 16:57:04
【问题描述】:

我有一个静态链接 (s.so) 的共享对象 (a.so)。 b.so 也有 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 选项。

【问题讨论】:

  • @Khnle 我发誓,你可以剔除其中的一半,只需消除缺少问号的“问题”。
  • 我不明白您所说的静态链接到 .so 是什么意思。它真的是一个 .so,即一个动态库,还是它实际上是一个应该有后缀 .a 的静态存档?
  • 抱歉,现在编辑问题。

标签: c++ linux gcc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多