C++ 链接时GCC内存过载

C++ 链接时GCC内存过载,c++,linux,gcc,cmake,clang,C++,Linux,Gcc,Cmake,Clang,免责声明:请不要嘲笑我的机器。这是我现在所拥有和能负担的全部 Legacy Bios Dell Mobo Athlon II X4 640 Processor 4Gb DDR3 Ram 500Gb HHD 你好,世界!在过去一周半的时间里,我一直在尝试使用cmake/ninja和gcc编译llvm/clang工具,或者从基本存储库编译默认版本的clang 每次我尝试,它们都会崩溃,我固执地重新开始。起初,我一直在重新划分并重新安装Ubuntu,添加12Gb的交换分区,但我的系统不稳定,编译器无

免责声明:请不要嘲笑我的机器。这是我现在所拥有和能负担的全部

Legacy Bios Dell Mobo
Athlon II X4 640 Processor
4Gb DDR3 Ram
500Gb HHD
你好,世界!在过去一周半的时间里,我一直在尝试使用cmake/ninja和gcc编译llvm/clang工具,或者从基本存储库编译默认版本的clang

每次我尝试,它们都会崩溃,我固执地重新开始。起初,我一直在重新划分并重新安装Ubuntu,添加12Gb的交换分区,但我的系统不稳定,编译器无法完成这项工作

我就在那里停了下来,决定在操作系统上尽可能地轻一点,然后再试一次(认为这会使系统更稳定,膨胀更少)。我用一个最小的构建和一个动态交换文件安装了ArchLinux。没有放弃的念头,我继续编辑。现在,我仍然得到相同的内存过载,但操作系统能够管理它,并在我不进行硬重启的情况下启动进程。我认为这是朝正确方向迈出的一步。 来自VisualStudio,我是一个处女

这是我的身材:

默认为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++代码?

< P>你可以使用预包装的CLAN/LLVM版本,如果你真的需要最新的和最伟大的(你呢?)看看这里的Arch:。

为什么需要自己编译Clang?考虑到您有限的资源,使用其他人制作的构建难道没有意义吗?构建非平凡的编译器和其他开发人员的工具——以及llvm/clang或gcc都将被视为非平凡的工具——往往会消耗大量内存。1)添加更多的交换。2) 使用
-j1
构建,以避免并行运行多个编译器。3) 等等(相当长一段时间)。我记得
llvm
的默认构建类型是
debug
。在
发布版
构建版上,这可能需要大量额外的内存/交换。如果是这种情况,请尝试使用
cmake
将构建类型设置为
release
。如果不需要交叉编译器,也可以只针对CPU体系结构,而不是所有支持的体系结构,从而缩短编译时间。例如,使用
-DLLVM\u TARGETS\u TO\u BUILD=“X86”
。非常酷。我必须更新我的机器。我最终把预编译的二进制文件从LLVM的网站上删除了。这对arch机器上的-v6.0.0很好。真的很喜欢北极熊。从windows到linux的这一转变真的让我头晕目眩,但这似乎是为了更好。在使用VS的Windows计算机上,只需单击或按键即可构建项目。决定使用文本编辑器而不是ide是我做出的最好的决定之一,因为它教会了我更多关于构建过程的知识。我只是想补充一下。