【问题标题】:how can i get compilation, assembling, preprocessor and linking time separately for g++我如何分别获得 g++ 的编译、组装、预处理器和链接时间
【发布时间】:2019-09-14 11:26:28
【问题描述】:

我们正在努力减少具有多个库和 cpp 文件的代码的构建时间。我想检查哪个步骤在编译、组装、预处理器和链接方面花费了更多时间。有什么办法可以让我为整个项目单独安排时间?

请提出建议。任何类型的帮助/指针/建议将不胜感激。我正在我的 debian 系统上使用 make 构建。

【问题讨论】:

  • 明确地分别执行每个步骤?
  • 另外,你为什么需要知道这个?是否有一些潜在的问题导致你相信你需要那些时间?
  • 我尝试单独做,但由于库中的相互依赖关系,我无法构建完整。即使我尝试使用 -ftime-report 选项,但对链接和预处理时间没有多大帮助。 @Someprogrammerdude
  • 编译需要2个多小时,虽然代码很大,但我需要先弄清楚有问题的步骤。
  • 构建总是需要那么长时间吗?还是只是全面重建?如果即使更改单个源文件也会导致完全重建或花费过长的时间,那么首先考虑划分您的构建,尝试将尽可能多的拆分为可以单独构建的独立单元。然后对于主项目,基本上是将独立部分链接在一起的问题,除非您有数百个需要链接的部分(库、静态或共享),否则应该很快。

标签: c++ gcc makefile compilation g++


【解决方案1】:

你试过gcc

'-时间[=文件]' 报告编译中每个子进程占用的CPU时间 顺序。对于 C 源文件,这是正确的编译器,并且 汇编器(如果链接完成,则加上链接器)。

如果没有指定输出文件,输出看起来像 这个:

  # cc1 0.12 0.01
  # as 0.00 0.01

…

? (来自the manual。)

【讨论】:

  • 谢谢,这对大部分步骤都有帮助。仍然无法记录预处理步骤。我可以从 -ftime-report 中提取这些数据吗?
  • 你确定你需要它,即cc1plus(正确的编译器)在配置文件中很重要吗?无论如何,-no-integrated-cpp 选项似乎可以为您解决问题。您会在-time 报告中看到编译器被调用了两次:首先是-E(那是处理器),然后是-fpreprocessed
  • 非常感谢,这是我一直在寻找的唯一选择。
猜你喜欢
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
相关资源
最近更新 更多