C++ 编译错误:fatal error:Killedsignalterminatedprogram cc1plus
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u0AWiSaI-1677635658750)(https://qiniu.sodalu.top/uPic/2023-03-01-09-48-29-image-20230301094813525.png)]使用 Colcon 在编译 ROS2 源码时,编译到 rosbag2_transport 时报错。使用*度查找后,发现
背景
使用 Colcon 在编译 ROS2 源码时,编译到 rosbag2_transport 时报错。
错误描述
– stderr: rosbag2_transport
c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[2]: *** [CMakeFiles/test_play_services__rmw_fastrtps_cpp.dir/build.make:63: CMakeFiles/test_play_services__rmw_fastrtps_cpp.dir/test/rosbag2_transport/test_play_services.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1281: CMakeFiles/test_play_services__rmw_fastrtps_cpp.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs…make: *** [Makefile:141: all] Error 2
Failed <<< rosbag2_transport [1min 39s, exited with code 2]
Aborted <<< camera_calibration_parsers [2.07s]Summary: 205 packages finished [2min 26s]
1 package failed: rosbag2_transport
1 package aborted: camera_calibration_parsers
1 package had stderr output: rosbag2_transport
136 packages not processed
解决方案
使用*度查找后,发现是虚拟机内存不足的原因,需要创建 swap 分区。
创建 swap 分区
# 创建分区路径
sudo mkdir -p /var/cache/swap/
# 设置分区的大小
# bs=64M是块大小,count=64是块数量,所以swap空间大小是bs*count=4096MB=4GB
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
# 设置该目录权限
sudo chmod 0600 /var/cache/swap/swap0
# 创建SWAP文件
sudo mkswap /var/cache/swap/swap0
# 激活SWAP文件
sudo swapon /var/cache/swap/swap0
# 查看SWAP信息是否正确
sudo swapon -s
以下是设置成功的截图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u0AWiSaI-1677635658750)(https://qiniu.sodalu.top/uPic/2023-03-01-09-48-29-image-20230301094813525.png)]
删除分区
sudo swapoff /var/cache/swap/swap0
sudo rm /var/cache/swap/swap0
释放空间
sudo swapoff -a
#详细的用法:swapoff --help
#查看当前内存使用情况:free -m
Reference
更多推荐
所有评论(0)