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

树莓派3B的Rasbian Stretch编译OpenCV3.3.0至58%失败求助

解决树莓派3B编译OpenCV 3.3.0到58%时的链接错误

我之前在树莓派上折腾OpenCV编译时也碰到过几乎一模一样的问题,这个错误的核心是gr_chalearn.cpp.o这个目标文件被截断了,导致链接器collect2报错。大概率是编译过程中资源不足、意外中断或者存储介质出了小问题,给你几个亲测有效的解决思路:

  • 先清理损坏文件,降低编译并行度重新编译
    首先进入你的OpenCV编译目录,执行清理命令把损坏的目标文件删掉:

    cd /path/to/your/opencv/build
    make clean
    

    树莓派3B的CPU是4核,但内存只有1GB,用make -j4很容易因为内存耗尽导致文件写入异常。建议改成低并行度甚至单线程编译:

    make -j2  # 或者直接执行 make,单线程更稳定
    
  • 临时增大交换空间,缓解内存压力
    编译OpenCV对内存需求很高,树莓派默认的交换空间太小,很容易爆内存。可以临时调整交换空间:

    1. 编辑交换空间配置文件:
      sudo nano /etc/dphys-swapfile
      
    2. 找到CONF_SWAPSIZE=100,改成CONF_SWAPSIZE=1024(如果SD卡剩余空间够,改成2048更好)
    3. 重启交换服务生效:
      sudo /etc/init.d/dphys-swapfile restart
      

    注意:编译完成后记得改回原来的交换空间大小,长期用大交换空间会加速SD卡磨损。

  • 检查SD卡的健康状态
    文件截断也可能是SD卡出现了坏块或者写入错误。可以通过以下命令排查:

    dmesg | grep mmc
    

    看看输出里有没有类似mmcblk0: error的日志。如果有条件,最好把SD卡插到其他设备上用磁盘检测工具检查,或者备份数据后重新格式化SD卡再尝试编译。

  • 确认OpenCV源代码的完整性
    有时候下载的源码包可能有损坏,导致编译生成的目标文件异常。如果前面的方法都没用,可以重新拉取完整的OpenCV 3.3.0源码(记得带上子模块):

    git clone --branch 3.3.0 --recursive https://github.com/opencv/opencv.git
    

    然后重新运行CMake配置,再开始编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:38:11