如何强制 gcc 和 ld(make totally)使用更少的内存?

如何强制 gcc 和 ld(make totally)使用更少的内存?

我必须用我的源代码编译一个计算机生成的源代码,它太大了,我无法控制它。由于我的内存不多,我不得不强制使用较少的内存。否则,它会被操作系统杀死(精确)。我该怎么办?

答案1

为您的机器添加更多交换空间作为解决方案怎么样?这将增加更多虚拟内存,并可能允许您构建代码而不会让 OOM killer 杀死编译器。如果您不想费力地扩大交换分区,您可以添加一个临时交换文件。例如,添加一个基于文件的 4GB 交换空间:

dd if=/dev/zero of=swap.img bs=1M count=4096
mkswap swap.img
chmod 0600 swap.img 
sudo chown root:root swap.img
swapon swap.img

答案2

您尝试过使用nice吗?它允许为您的进程设置自定义优先级。nice范围从 -20 到 19,其中 19 为最低优先级,-20 为最高优先级。您可以尝试以下方法:

nice -n 19 command_you_want_to_execute

例子:

nice -n 19 firefox

编辑:稍微阐述一下我的回答,如果你的操作系统终止了你的进程,那是因为它占用了系统正常运行所需的资源。如果你降低进程的优先级,这些资源将自动分配给更重要的系统任务。

相关内容