【问题标题】:Redundant occurances of a statically linked library?静态链接库的冗余出现?
【发布时间】:2013-11-30 23:02:17
【问题描述】:

首先,我们有一个system 项目,它提供了一些抽象架构类。然后,几个具有不同名称的module 项目从系统的类之一继承以实现专门的功能。最后,application 将两者结合在一起。它从系统实例化基础架构并将模块附加到它。

这给出了以下依赖项。

  • system 没有依赖关系并构建到静态库。
  • 所有 modules 都依赖于 system 并构建到静态库。
  • application 依赖于 system 和所有 modules 并构建可执行文件。

当我构建此设置时,是否所有 module 库都包含 system 库的副本?如果是这样,我可以防止这种行为吗?最后,无论如何,它们在可执行文件中与system 库一起静态链接在一起。

【问题讨论】:

  • 这不是一个答案,因为我自己也不确定,但我会认为,当您链接应用程序时,您只需链接到 modules.lib,这意味着所有系统功能也有。
  • 您可以将系统构建为 lib,将模块构建为 dll,然后动态链接到该 dll

标签: c++ compiler-construction build linker dependencies


【解决方案1】:

当您构建一个库时,没有任何链接。库只是一堆粘在档案中的目标文件。只有当您构建应用程序时,链接器才会参与其中,提取应用程序各个组件所需的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多