背景
发现一个LibreOffice的bug,想本地debug一下,把它解决了。
过程
根据文档一步一步进行:
问题
当在本地执行make时,最后报错:
g++: fatal error: Killed signal terminated program cc1plus
重试了几遍仍然如此。
原因
通过网络搜索得知,这个问题可能是由于swap太小。查看了下我的swap大小,只有1G,可能确实太小了。
解决
我的磁盘现在的分区方案是:
/ | 150G |
swap | 1G |
/home | 379G |
因为磁盘空间够大,我打算把swap分区扩大一点,到12G。
删除现有swap
打开Debian/GNOME自带的Disks,选择磁盘,选择swap分区,删除分区,使分区变成未分配空间。
给新的swap划分空间
Disks里面选择/home分区,调整 Size大小,让following空间为12G,给新的swap划分空间。确认。
创建新的swap分区
选择新创建出来的12G空间,创建一个新分区,类型选择其他->swap。
把旧的swap空间合入/home
打开系统自带的GParted(如果没有,可以通过系统自带的Software程序安装),选择/home分区,调整preceding和following大小,让它们都变成0。
最终磁盘分区变成了这样:
操作分区的时候需要先把分区unmount,但是可能会遇到target busy的提示,这个时候使用如下命令查看当前是哪些程序在使用分区:
lsof /home
然后把相关的程序关闭即可。我是使用root用户操作上述所有步骤的,所以可以完全把/home unmount。
重整swap分区后,重新执行make,成功!
====================================================================
如果改完后开机时遇到如下信息:
Gave up waiting for suspend/resume device
可能是swap分区配置不对
使用 blkid 来查看分区的UUID。
检查:
/etc/fstab | 分区swap信息是否正确 |
/etc/initramfs-tools/conf.d/resume | RESUME=UUID=41807037-ac33-455a-ab52-da22336284d1 这里面的UUID就是swap的。 修改成正常的后执行: sudo update-initramfs -u 然后重启。 |