【发布时间】:2018-07-07 13:59:37
【问题描述】:
免责声明:请不要嘲笑我的机器。这是我目前拥有和负担得起的全部。
Legacy Bios Dell Mobo
Athlon II X4 640 Processor
4Gb DDR3 Ram
500Gb HHD
世界你好!在过去的一周半里,我一直在尝试使用带有 gcc 的 cmake/ninja 或来自基本存储库的默认版本的 clang 来编译 llvm/clang-tools。
每次我尝试时,他们的编译器都会崩溃,然后我又顽固地重新开始。起初我一直在重新分区并重新安装 Ubuntu,直到我添加了 12Gb 的交换分区,但我的系统不稳定,编译器无法完成工作。
我就停在那里,并决定我应该在操作系统上尽可能轻松,然后再试一次(认为这样可以使系统更稳定,减少臃肿)。我安装了带有最小构建和动态交换文件的 Arch Linux。没有放弃的想法,我继续编译。现在我仍然遇到同样的内存过载,但操作系统能够管理它并退出进程,而无需我进行硬重启。我认为这是朝着正确方向迈出的一步。
来自 Visual Studio,我是编译器标志的处女。
这是我的构建:
默认为 ccache。
$ cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ../llvm
$ ln -s $PWD/compile_commands.json ../llvm
$ ninja -j2 check-all
单线程“$ make .....”仍然存在内存过载。
除了花费 20 美元来填充 ram 的最后 2 个插槽(我的妻子确实允许我为我的生日做这件事)之外,像我这样的穷人还能做些什么来获得这个有价值的工具并返回编译我自己的 C++ 代码?
【问题讨论】:
-
为什么需要自己编译Clang?鉴于您的资源有限,使用其他人制作的构建是否有意义?
-
构建重要的编译器和其他开发人员的工具 - 以及 llvm/clang 或 gcc 都符合非平凡的条件 - 往往会消耗大量内存。
-
1) 添加更多交换。 2) 使用
-j1构建以不并行运行多个编译器。 3) 等待(很长一段时间)。 -
我记得
llvm的默认构建类型是debug。这可能需要在release构建上很多 额外的内存/交换。如果是这种情况,请尝试使用cmake将构建类型设置为release。 -
您还可以通过仅针对您的 CPU 架构(如果您不想要交叉编译器)而不是所有受支持的架构来减少编译时间。以
-DLLVM_TARGETS_TO_BUILD="X86"为例。