【问题标题】:Linking other libraries into dynamically loaded libraries将其他库链接到动态加载的库中
【发布时间】:2012-05-23 13:25:00
【问题描述】:

我正在编写一个由另一个程序动态加载的库。该库使用一些 Boost 库(例如,线程)。是否可以在不重新编译相关程序的情况下使其以某种方式工作?

如果我使用链接标志-lboost_thread,它不起作用,因为使用这个库的程序也需要链接同一个 Boost 库。使用/usr/lib/libboost_thread.a 也不起作用,因为.a 文件不是用-fPIC 编译的。

我在 Linux 下使用 GCC。

【问题讨论】:

  • 你的意思是加载你的库的程序需要在运行时加载boost库吗?您不需要在构建时将该库链接到主应用程序,它只是一个运行时依赖项......对吗?
  • 程序加载一个我写的动态库。该库依赖于 Boost。
  • 那么问题是程序在运行时找不到Boost库,所以你的库加载失败?

标签: c++ gcc shared-libraries dynamic-loading


【解决方案1】:

再次尝试,我发现问题不是我描述的。由于其他原因,库没有加载。我发现将库与-lboost_thread 链接是可行的,但条件如下:

  • gcc 给出编译器警告(可能是因为库来自-L 路径,而该路径不在$LD_LIBRARY_PATH 中)。
  • 加载库时,它会自动加载 Boost,前提是它可以找到它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多