c++ - 过度包含库 C++

标签 c++ gcc makefile

我正在阅读有关如何将 makefile 放在一起的信息,但似乎没有人提到如果您的文件需要不同的库集该怎么办,它们似乎都为每个文件使用相同的库集。由于似乎不太可能每个文件都具有相同的库,因此我认为他们使用的列表必须合并整个项目所需的所有库。

我只是想知道包含太多库是否有任何缺点,或者编译器是否会找出需要哪些库并忽略其余的?

谢谢

最佳答案

If there's any downside to including too many libraries?

几乎没有。

If the compiler works out which ones are needed and ignores the rest?

几乎完全正确:链接器检查每个库并仅提取它需要的目标代码。

包含大量库的一个缺点是很难按正确的顺序排列它们。最近版本的 GNU 链接器有一些特殊的选项可以帮助解决库乱序问题(而且也到了时候了),但这些选项仍然是不可移植的。另一方面,如果您包含实际不需要的库,它们以什么顺序出现并不重要,因为链接器会仔细检查每个库并决定不需要其中的任何内容。

对于所有正在寻找项目的人来说,这是我想要的:给我一个工具,它可以获取库列表并对库间依赖关系进行拓扑排序,然后告诉我一个命令可以将它们放在命令行上,这样就不会出现无缘无故的 undefined symbol 。

关于c++ - 过度包含库 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844448/

相关文章:

c++ - 特殊情况不返回的递归返回函数

c - 我可以为 gfortran 使用哪些 gcc 编译器选项

c++ - 无法使用 g++ 导入共享库

c - 如何从源代码编译postgresql并将其安装到隔离位置?

c++ - 使用 System () 运行脚本时出现段错误

c++ - reinterpret_cast 本身会导致异常吗?

c - Makefile 在 ubuntu 14.04 上失败 - undefined reference

c++ - 为什么函数参数在调用堆栈上比返回地址更早推送?

makefile - 如何将目标名称传递给子生成文件列表?

c++ - 如何读入 .cfg.txt 文件