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

树莓派3编译PCL库时出现cc1plus内存不足错误求助

解决树莓派3编译PCL时内存不足的问题

嘿,我之前在树莓派3上折腾PCL编译的时候,刚好碰到过和你一模一样的问题!明明看着还有1G空闲内存,结果编译到pcl_recognition模块的geometric_consistency.cpp就爆内存错误,其实这背后是几个树莓派特有的限制导致的,给你几个亲测有效的解决办法:

1. 先关掉你不需要的PCL模块(最见效)

你说只是要用到可视化命令行工具生成点云图片,那完全没必要编译整个PCL库!尤其是报错的pcl_recognition模块,本身就是内存大户,直接在cmake阶段把它关掉,同时关闭其他无关模块,能大幅减少编译压力:

cmake -DCMAKE_BUILD_TYPE=Release \
      -DBUILD_EXAMPLES=OFF \
      -DBUILD_TESTS=OFF \
      -DBUILD_PCL_RECOGNITION=OFF \
      -DBUILD_PCL_VISUALIZATION=ON \
      -DBUILD_COMMAND_LINE_TOOLS=ON \
      ..

这样编译的时候会直接跳过那个耗内存的文件,大概率能直接解决问题。

2. 调整交换空间(swap)

树莓派默认的swap空间很小(通常只有100MB左右),编译C++大文件时,哪怕物理内存还有剩余,编译器的内存峰值也可能需要用到虚拟内存,这时候swap不够就会报错。你可以临时把swap调到2G:

  • 先停止当前swap:sudo dphys-swapfile swapoff
  • 编辑swap配置文件:sudo nano /etc/dphys-swapfile
  • 找到CONF_SWAPSIZE,把数值改成2048,保存退出
  • 重新生成并启用swap:sudo dphys-swapfile setup && sudo dphys-swapfile swapon

注意:用完编译后记得把swap改回原来的大小,避免长期用大swap磨损SD卡。

3. 减少编译线程数

树莓派3是4核,但并行编译(默认-j4)会让多个编译进程同时抢占内存,瞬间把内存拉满。改成单线程或者双线程编译,能降低内存峰值:

  • 如果用make编译:make -j1
  • 如果用cmake直接构建:cmake --build . --parallel 1

4. 降低编译器优化级别

默认的-O3优化会让gcc消耗更多内存来做优化,改成轻度优化-O1或者大小优化-Os,能减少编译器的内存使用:

cmake -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_CXX_FLAGS="-O1" \
      # 加上其他你需要的参数
      ..

按这个顺序试下来,先关无用模块,再调整线程数,应该就能顺利编译完成了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:04:18