如何构建一个缺少依赖项的共享对象(.so)



我想构建一个依赖于另一个.so(让我们命名为B(的共享对象(让我们将其命名为a(。B正在实现A正在使用的某个接口。

将加载A的机器也有B,所以当加载A时(在加载时或通过dlopen(,它加载B,一切都很好。问题是我无法构建B(在我正在构建A的机器上(,因此也无法构建A,因为我得到了一个链接器错误。当然,我希望在做lddA时将B视为依赖项。

是否有一个链接器选项可以在没有B的情况下构建a?

显示我的系统的图片

感谢

问题是我无法构建B(在我正在构建A的机器上(,因此无法构建A,因为我遇到了链接器错误。

这里有很多缺失的信息。

  1. 您有一个B.so版本。为什么不能将该版本复制到正在构建A.so的机器上,并使用它来实际构建A.so
  2. 使用默认链接器标志,应该能够链接A.so,即使它使用来自B.so的符号,而没有可用的B.so(使用-shared构建时默认忽略未解析的符号(

    这将产生不依赖于B.soA.so。在dlopen()时,您只需先用RTLD_GLOBAL加载B.so,然后再加载A.so
  3. 如果您确实需要A.so -> B.so依赖项,则可以创建一个空的B.so,并针对该的进行链接

相关内容

  • 没有找到相关文章

最新更新