You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bazel在Ubuntu 20.04构建Drake源码运行示例时出现gcc编译报错

错误根因

gcc: fatal error: Killed signal terminated program cc1plus 是系统内存不足触发OOM(内存溢出)杀手进程,主动终止了资源占用过高的编译进程导致的。Drake的pybind11绑定模块编译单进程峰值内存占用可达8~12GB,默认并行编译时总内存需求超过32GB,小内存设备默认参数编译必然触发OOM。

解决方法
  • 限制Bazel并行编译任务数
    根据设备物理内存大小调整--jobs参数,8G内存建议设置--jobs=1,16G内存建议设置--jobs=2,32G及以上可以不用调整。修改后的编译命令如下:

    bazel run --jobs=2 //tutorials:mathematical_program
    

    若调整后依然触发OOM,可继续降低--jobs的数值。

  • 新增swap交换分区扩容虚拟内存
    物理内存不足时可以新增16G及以上容量的swap文件作为虚拟内存兜底,操作命令如下:

    # 创建16G大小的swap文件
    sudo fallocate -l 16G /swapfile
    # 配置swap文件权限
    sudo chmod 600 /swapfile
    # 格式化为swap格式
    sudo mkswap /swapfile
    # 启用swap文件
    sudo swapon /swapfile
    

    若需要开机自动挂载swap,可将/swapfile none swap sw 0 0写入/etc/fstab文件。

  • 可选:关闭Python绑定编译(无pydrake使用需求时用)
    若不需要使用pydrake功能,可以加参数跳过Python绑定编译,大幅降低内存占用和编译耗时:

    bazel run --define=WITH_PYTHON_BINDINGS=OFF //tutorials:mathematical_program
    

内容的提问来源于stack exchange,提问作者Dmitriy Ogureckiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:39:01