背景

使用 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

  1. https://blog.csdn.net/lucky__peng/article/details/124272717
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐