我有一个项目需要大约 8 秒来链接 g++ 和 ld。
它使用了一堆静态库,大部分代码都是c++。
我对有关如何减少链接时间的一般提示列表感兴趣。 从“不包含调试符号”到“让你的代码少一些意大利面条”
最佳答案
我在以前的工作中处理了很多年。 GNU 链接器在链接大量静态库时存在严重的性能问题。在某一时刻,链接时间与编译时间相当,我们发现这很奇怪,我们实际上对此进行了调查并弄清楚了。
您可以尝试在链接之前将您的静态库合并为“ super 对象”。而不是这样的链接:
$ g++ -o program program.o $STATIC_LIBS
你可以试试这个:
$ ld -r -o libraries.o --whole-archive $STATIC_LIBS
$ g++ -o program program.o libraries.o
请注意,此方法使链接器排除未使用的目标代码的机会更少,因此您的二进制文件的大小可能会有所增加。
关于c++ - 减少 c++ 链接时间的技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4557356/