Ubuntu20.04编译Drake源码时cc1plus被终止报错求助
解决Ubuntu 20.04编译Drake源码时cc1plus被终止的问题
问题核心
报错信息里的cc: fatal error: Killed signal terminated program cc1plus是关键——这是系统因内存不足触发OOM(内存溢出)杀手,终止了占用过高内存的C++编译前端进程cc1plus导致的。
解决方案
- 降低并行编译线程数:将
make -j4改为make -j2甚至make -j1,减少同时运行的编译进程数量,降低内存总占用。编译速度会变慢,但能避免内存耗尽。 - 检查并扩展系统内存/交换空间
- 用
free -h查看当前内存和swap使用情况,如果swap空间不足,可临时创建swap文件:
编译完成后若不需要可关闭swap:sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfilesudo swapoff /swapfile并删除文件。
- 用
- 限制Bazel内存使用:Drake底层用Bazel编译,可通过环境变量限制其内存占用比例,比如设置只使用系统50%的内存:
export BAZEL_OPTS="--local_ram_resources=HOST_RAM*.5" make -j4 - 清理编译缓存后重新编译:
make clean make -j2
内容的提问来源于stack exchange,提问作者Yuxuan Wang
相关产品推荐
相关产品推荐

