【问题标题】:How do you package all link dependencies into a single Linux static library?如何将所有链接依赖项打包到一个 Linux 静态库中?
【发布时间】:2018-10-05 05:50:00
【问题描述】:

我正在发布一个多平台库,它可以在除 Linux 之外的任何地方运行。可能有一种方法可以满足我的需要,但我没有看到它,希望这里有人可以提供帮助。

我的库包含两个项目,Windows 上的“subLibrary.lib”和“library.lib”(例如)。我构建“子库”,然后将其链接到“库”以进行分发。消费者只需链接“库”即可获取所有内容,包括“子库”中的内容。

所有其他平台的工作方式都相同——我发布了一个巨大的“library.a”,其中包含所有内容,消费者与之链接,无需了解任何较低级别的依赖项。

在 Linux 上构建标准可执行文件时,我的链接命令不仅必须指定 'library.a',还必须指定它的 每个 依赖项。这是因为中间库会留下未解析的符号,直到以后。

我想做的是使其与其他平台相同,因此使用的可执行文件只需与“library.a”链接,并且该库包含它需要的所有内容。

我知道这会使库变得更大,但这是确保每个人都能解决依赖关系和构建时间的唯一方法。

【问题讨论】:

标签: c++ linux c++11 ld libtool


【解决方案1】:

在 unix 上,库只是所有目标文件的集合。您可以使用 AR 将更多文件添加到库中,但您需要注意文件名冲突。

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 2014-11-22
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    相关资源
    最近更新 更多