建立铿锵永远

Bri*_*n B 4 clang

我很困惑.我有一台运行Ubuntu 14.04的虚拟机.我遵循了这里的程序:http://clang.llvm.org/docs/LibASTMatchersTutorial.html,我正处于运行忍者的步骤.这构建了llvm和clang.现在,我的VM并不懈怠,我给了它6GB的RAM和4个CPU以及一个20GB的交换文件.最大的问题出现在链接时 - 它似乎启动了大量的ld进程,每个进程至少使用3-4GB或虚拟内存,并且在某些时候每个进程都有很多CPU.但是交换文件增长到超过12GB并且进程都是IO绑定的,但是我不知道他们是在做一些有用的东西,还是颠簸.我所知道的是磁盘正在受到重创,工作将永远持续下去.我实际上只是把CPU的CPU数量减少到了1,看看它是否可能更有效率和更少的并行性,因为我猜测问题可能是颠簸.

我想我的磁盘可能很慢......有什么想法吗?我应该使用make而不是忍者吗?我的专业知识不是Linux(虽然我到了那里:-))所以我正在学习本教程,但也许不建议使用"最佳"方法来构建clang/llvm程序.

小智 6

我一直在那里,它发生在最新的svn版本中(但如果你得到clang 3.8或更早的版本则不会).发生的事情是,因为在开发期间,还为每个编译单元生成了大量调试信息,文件大小变得越来越大.

解决方案是关闭默认情况下附加的所有调试信息.你可能不打算调试clang,所以不需要它.所以不要只是这样做

cmake -G Ninja ../llvm -DLLVM_BUILD_TESTS=ON
Run Code Online (Sandbox Code Playgroud)

你应该做的是

cmake -G Ninja ../llvm -DLLVM_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release
Run Code Online (Sandbox Code Playgroud)

所有其他步骤保持不变.现在我还没有用忍者测试过这个,但是在ubuntu上用make验证了它(本教程,我在第7步修改了同样的东西).这应该像我们一样.

  • 伟大的!解决了我在 clang 9 上的问题。有趣的是,无论它生成什么类型​​的信息,都仅通过 1 个线程完成!所以我的 CPU 利用率大约是 25%。尽管我在 zfs strip 配置中有 2xSSD,但我所能做的就是盯着显示器大约两个小时。不管怎样,谢谢你的提示 (2认同)