cmake/colcon编译时过慢、卡住或卡死情况解决

一、cmake编译

  1. 是否使用root权限

        解决:使用sudo make编译

  2. 是否开启并行编译

    问题一:编译过慢

        解决:开启并行编译,首先检查cpu的内核个数,终端输入

nproc

        然后根据需要,选择不高于你的cpu内核数进行并行编译,比如我的cpu是8核的,那么在编译时输入

sudo make -j8
    问题二:编译卡住、卡死

        解决:如果开启了并行编译,则降低使用的内核数,或者不使用并行编译

sudo make -j4  # 只使用4个内核
sudo make      # 不使用并行编译

        如果不使用并行编译依然卡住卡死,这一般是由于设备内存有限,我们可以增加内存交换空间,首先停用我们已有的交换空间:

sudo swapoff /swapfile

        然后我们分配一个大一点的交换空间,比如这里我分配1M*4096 = 4GB的空间:

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

        最后再启用这个交换空间,之后再进行编译。

sudo mkswap /swapfile
sudo swapon /swapfile

         (optional)永久增加此交换空间

sudo vim /etc/fstab

        然后将/swapfile swap swap defaults 0 0加到在fstab文件中让系统引导时自动启动

二、colcon编译

    问题一:编译过慢

        解决:开启并行编译,首先检查cpu的内核个数(同上面cmake),然后根据需要,选择不高于你的cpu内核数进行并行编译,比如我的cpu是8核的,那么在编译时输入

colcon build --parallel-workers 8
    问题二:编译卡住、卡死

        解决:如果开启了并行编译,则降低使用的内核数,或者不使用并行编译

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

        如果不使用并行编译依然卡住卡死,这一般是由于设备内存有限,我们可以增加内存交换空间,操作流程同上述cmake,之后再进行colcon编译。

关于交换空间,具体可参考:http://t.csdnimg.cn/TV1zC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值