我可以使用LLVM加速构建并减少GCC编译时间吗?

时间:2014-08-22 10:48:36

标签: c++ gcc clang llvm

我正在尝试缩短HHVM的编译时间,这可能需要两个小时。

我在某处读到LLVM可以充当gcc的预处理器并大大减少内存使用和编译时间?

不幸的是,我似乎无法直接使用HHVM汇编clang因为我遇到了'array' file not found等奇怪的致命错误,即使我尝试将CXXFLAGS设置为-std=c++11-std=gnu++11模式,没有运气。

我读过关于dragonegg但不确定如何使用它或者它是否是我要找的东西?

3 个答案:

答案 0 :(得分:2)

dragonegg是gcc的LLVM代码生成插件,因此它与您正在寻找的内容相反。

我不知道如何在最近支持的gcc前面插入Clang。也就是说,如果你可以用gcc构建一个项目,那么使用Clang构建它并不困难。如今,即使是Linux内核也可以使用Clang构建一些小补丁。 HVVM开发人员很可能也会使用Clang构建它,并且可能会有一些补丁。

但标题中问题的答案是否定的。

答案 1 :(得分:2)

  

我在某地读过LLVM可以充当gcc的预处理器

我认为您所阅读的内容实际上是关于预处理的。实际上,我自己依稀记得有人比GCC更快地打电话给Clang的预处理器。对我们来说不幸的是,您的答案并未提供指向您的信息来源的链接,因此无法检查实际的索赔内容。

您可以使用clang -E file.c -o file.i预处理C文件。在此之后,您可以使用GCC编译file.i,GCC将能够省略其(假设速度较慢)的预处理器。不幸的是,预处理是编译C文件的最简单步骤,我怀疑它占总时间的3%以上,这意味着即使将预处理所花费的时间减半,也最多可以改善编译时间减少1.5%。

我没有看到两个编译套件之间通用的任何其他语言,而不是可以从Clang输出的预处理C,以便加速进入GCC。

答案 2 :(得分:2)

无论如何,我认为直接使用clang会更容易。因此,试着找出为什么clang不适用于该项目,并找到补丁/修复程序。

例如,应用this patch可能是一个好的开始。