【问题标题】:two shared libraries ( have some same source code ) can not be loaded at the same tine?不能同时加载两个共享库(有一些相同的源代码)?
【发布时间】:2010-10-17 10:24:49
【问题描述】:
  • 开发工具:Sun Studio 11
  • 标志:CXXFLAGS=-O2 -g

我有两个共享库,libA.so libB.so:

  • /A/root.cpp /A/a.cpp用于生成libA.so
  • /B/root.cpp /B/b.cpp用于生成libB.so
  • /A/root.cpp 和 /B/root.cpp 相同

libA.so和libB.so会在主程序运行时动态加载

在加载 libA.so 然后加载 libB.so 时,libB.so 将打印以下调试信息: /B/b.cpp:...... /A/root.cpp : ...

在加载 libB.so 再加载 libA.so 时,libA.so 将打印以下调试信息:

/A/a.cpp : .....
/B/root.cpp : ...

为什么?

【问题讨论】:

    标签: linker shared loader


    【解决方案1】:

    如果您尝试静态编译它,链接器会抱怨多个定义。加载程序看起来很困惑,并试图优雅地失败。

    http://uw714doc.sco.com/en/SDK_cprog/CCCS_LinkEdit.html#CCCS_HdlMultDefdSyms

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2010-09-18
      • 2019-04-02
      • 1970-01-01
      相关资源
      最近更新 更多