我正在阅读有关如何将 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/