减少c ++链接时间的技巧

Luc*_*jer 18 c++ linker

我有一个项目,大约需要8秒钟与g ++和ld链接.

它使用了一堆静态库,大部分代码都是c ++.

我对如何缩短链接时间的一般提示感兴趣.从"不包括调试符号"到"使代码减少spagetti"的任何内容

bre*_*uck 10

我在以前的工作中处理了这个问题多年.在链接大量静态库时,GNU链接器只会出现严重的性能问题.有一次,链接时间与编译时间相当,我们发现这很奇怪,我们实际上已经对此进行了调查并弄明白了.

您可以尝试在链接之前将静态库合并为"超级对象".而不是像这样链接:

$ g++ -o program program.o $STATIC_LIBS
Run Code Online (Sandbox Code Playgroud)

你可以试试这个:

$ ld -r -o libraries.o --whole-archive $STATIC_LIBS
$ g++ -o program program.o libraries.o
Run Code Online (Sandbox Code Playgroud)

请注意,此方法使链接器没有机会排除未使用的对象代码,因此二进制文件的大小可能会有所增加.