我们可以传递一个目标的依赖项在运行时需要的共享库吗?

问题描述

  • A.so 由第三方提供

  • B.so 依赖于 A.so,但在 makefile B.so 没有链接到 A.so(不是动态的,也不是 静态)。

  • CB 库的测试可执行文件。在里面 makefile,C 动态链接到 BA

  • ldd B.so

    • 不依赖于预期的 A.so
  • ldd C

    • 依赖于 A.so 和 B.so
  • make B 可以很好地编译和构建 B。

  • make C 可以很好地编译和构建 BC

  • ./C 运行没有问题(这让我很惊讶

  • 问题
    - C 可以在运行时将 A.so 的位置传递给 B 吗?
    - B.so 是否真的需要针对 A.so 进行链接,或者如果其中一个依赖项在链接时间内为它解决了这个问题就可以了。
    - 如果是这样,在 C 处解决的依赖关系的顺序可能会导致 B.so 出现问题。例如,如果 CB.so 之前解析 A.so B 将失败。但是如果它首先解析 A.so,那么 B.so 会找到它需要的东西。或者已知的加载顺序,这正是 ldd 命令的输出中显示的内容

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)