树莓派4(64位Raspbian OS)安装Mediapipe时构建失败报错
报错核心原因
- GCC 10编译器兼容缺陷:本次报错明确是树莓派默认自带的GCC 10在处理Mediapipe的C++模板代码时触发了内部段错误,属于编译器本身的已知适配问题,旧版Mediapipe与GCC 10的兼容性较差。
- 内存/交换空间不足:Mediapipe源码编译需要至少4G以上可用内存,树莓派默认交换分区仅100M,编译大体积代码文件时很容易出现内存耗尽,触发编译器崩溃。
- 编译配置不适配:你参照的教程为Jetson设备专属教程,编译参数没有针对树莓派ARM架构做适配,参数错误也会引发编译失败。
对应解决方法
- 替换默认编译器为GCC 9
执行以下命令安装并配置GCC 9为系统默认编译器:
# 安装gcc 9和g++ 9 sudo apt install gcc-9 g++-9 # 配置编译器优先级 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 80 --slave /usr/bin/g++ g++ /usr/bin/g++-10 # 验证默认编译器版本,输出应为9.x版本 gcc --version
- 扩大交换分区到至少4G
# 关闭当前交换分区 sudo dphys-swapfile swapoff # 编辑交换分区配置文件 sudo nano /etc/dphys-swapfile # 将文件内CONF_SWAPSIZE参数值修改为4096,保存后退出编辑器 # 重新生成交换分区文件 sudo dphys-swapfile setup # 启用新的交换分区 sudo dphys-swapfile swapon # 验证交换分区大小,swap对应的total值应为4G左右 free -h
注意:编译完成后如果不需要大交换分区,可以按上述步骤改回原数值,避免占用过多SD卡存储空间。
3. 调整编译参数适配树莓派
- 进入Mediapipe源码目录,打开
setup.py文件,找到ARM架构编译相关的参数配置,新增编译选项-march=armv8-a+fp+simd(如果使用32位树莓派系统,替换为-march=armv7-a+neon-vfpv4) - 编译时限制并行任务数量避免内存耗尽,使用以下命令执行编译:
python3 setup.py bdist_wheel --jobs 2
- 若使用树莓派4/5 64位系统,可直接搜索安装适配好的预编译Mediapipe wheel包,跳过源码编译步骤。
内容的提问来源于stack exchange,提问作者Hasan Khurshid
相关产品推荐
相关产品推荐

