关于colcon编译卡死的解决办法

1、编译卡死的原因

进行colcon build编译时,系统默认采用并行编译,若文件量大,对系统的内存和CPU资源要求较高,容易出现卡死的问题。‌

2、解决方法‌:

1、‌关闭其他应用‌:关闭其他占用大量资源的程序,释放系统资源‌

2、调整并行编译时的核数

(1)查看CPU内核个数

nproc

(2)若你的内核个数为16,则选择更低的内核数编译或顺序编译 

colcon build --parallel-workers 8    # 使用8个内核
colcon build --executor sequential   # 不使用并行而是顺序编译

3、若更改编译方式,仍出现卡死情况,增大交换空间

(1)查看swap分区

free -h

若显示交换,则存在交换空间

efe9a9913e61493296cb13b05b56de5e.png

(2)创建交换区文件,大小根据实际情况选择

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 # 1 * 2048 = 2048 创建2G的内存分区

注:若运行此命令时出现报错:dd: 打开 '/swapfile' 失败: 文本文件忙

运行命令:sudo swapoff -a即可解决

sudo swapoff -a

(3)转化交换格式

sudo mkswap /swapfile

(4)设置交换文件权限

sudo chmod 600 /swapfile

(5)启用交换文件

sudo swapon -a /swapfile

若显示,swapon: /swapfile:swapon 失败: 设备或资源忙,先关闭交换文件,再启用

(6)关闭交换文件

sudo swapoff -a /swapfile