C++: fatal error: Killed signal terminated program cc1plus

C++: fatal error: Killed signal terminated program cc1plus

1. 在Linux系统中进行C++编译时,出现如下报错,导致编译中止:

C++: fatal error: Killed signal terminated program cc1plus
compilation terminated.

2. 解决方法——swap分区

查阅相关信息后,认为是虚拟机内存不足造成的。通过创建swap分区解决了这个问题,编译成功。

sudo mkdir -p /var/cache/swap/
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=1G count=8
sudo chmod 0600 /var/cache/swap/swap0
sudo mkswap /var/cache/swap/swap0
sudo swapon /var/cache/swap/swap0
sudo swapon -s

如果是在docker 中, 增加swap 需要在host 进行

由于每个运行的docker容器都使用主机内核,它们还使用主机的内存和交换。如果有需求,要求更好地使用主机交换空间的。如果你想从容器中添加交换,你有两个选择。

1. 以特权模式运行容器
在这种情况下,您将必须使用–privileged选项运行容器。
#示例

docker run -it –rm –privileged centos:6
2. 运行具有特权模式的容器可以为主机提供容器完整权限。

如果您阅读swapon的联机帮助页面,您可以看到,对于swapon来运行该进程应该具有CAP_SYS_ADMIN功能。在Docker中,您可以使用-cap-add参数有选择地向容器添加特定的功能。
#示例

docker run -it –rm –cap-add SYS_ADMIN centos:6
如果您以上述两种模式运行容器,您可以实现您正在尝试的功能。
现在,这种方法的问题是,当您在容器内创建交换并开始使用它时,实际上是使用它的主机内核,因此当您退出容器而不进行swapoff时,主机内核将仍然使用该文件,你不会得到一个干净的出口的容器。您将看到容器的死亡状态。

https://github.com/soedinglab/hh-suite/issues/280

https://blog.csdn.net/Aria_Miazzy/article/details/102455013

https://blog.csdn.net/weixin_44796670/article/details/121234446

posted @ 2024-05-08 19:26  michaelchengjl  阅读(1583)  评论(0编辑  收藏  举报