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

标签 c++ linker

我有一个项目需要大约 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/

相关文章:

c++ - 链接 mysqlpp_d.lib 的多个问题

c++ - Visual Studio 2010 链接器查找多重定义的符号(在不应该的地方)

c++ - 链接器 undefined symbol 错误

c++ While循环终止与功能

c++ - LLVM libc++ 无法在 Mac OS 上使用 clang 3.3 进行编译

c++ - CMake 使用错误的链接器标志(动态与静态)

c - 链接不正确,函数未定义,eclipse GCC 库路径

java - 如何使用 C++ 打开 Java 程序

c++ - 无法在 C++ 中删除 char 指针

c++ - Visual C++ 程序可以在 Mac OS X 或 Linux 上编译运行吗?