组织库依赖项

时间:2011-03-19 10:04:30

标签: c++ linker

我注意到链接似乎有两种方法:平面和分层方式。

让我举两个例子说明:

  • Visual Studio解决方案可以包含多个项目,其中一个项目是主项目。我通常的方法是将所有必需的库添加到主项目中,而不添加到其他项目中。我喜欢这个,因为这样我就不会得到“多重定义” - 链接错误。我不知道这种方法是否有官方名称所以我称之为扁平化方式。

  • 在工作中,我们的团队致力于基于Linux的流量生成应用程序。构建系统使用Automake。在查看makefile时,我注意到每个库都指定了它所需的库(在noinst_LIBRARIES变量中)。这些库中的每一个都可以依次指定它们的依赖关系。这导致树状结构。所以我称之为“分层方法”。

这方面的最佳做法是什么?似乎没有经常讨论过。

1 个答案:

答案 0 :(得分:2)

通常归结为静态与共享库。

如果你使用静态库,那么主程序通常必须(总是?)直接或间接地链接到它所依赖的每个库,因此是一个扁平的链接结构。

对于共享库(或Windows中的DLL),每个库都捆绑了自己的依赖项,因此主程序只需要直接链接到它所依赖的库,从而产生图形结构。

相关问题