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

Orange Pi Pc Plus编译Tensorflow 1.7.1时遇png_init_filter_functions_neon未定义错误

解决TensorFlow 1.7.1编译时png_init_filter_functions_neon未定义的问题

你遇到的是TensorFlow编译时链接NEON优化的libpng函数失败的问题——系统默认安装的libpng没有针对你的Cortex-A7(支持NEON-vfpv4)启用NEON优化,但TensorFlow的编译逻辑会尝试调用这些NEON专用函数,最终导致链接错误。下面是几个可行的解决方案:

1. 手动编译带NEON优化的libpng

系统自带的libpng-dev是通用编译版本,没有适配你的ARM架构,需要重新编译并启用NEON:

  • 下载适配TensorFlow 1.7.x的libpng 1.6.x源码:

    wget https://download.sourceforge.net/libpng/libpng-1.6.37.tar.gz
    tar -xzf libpng-1.6.37.tar.gz
    cd libpng-1.6.37
    
  • 配置编译参数,指定ARM架构和NEON优化:

    ./configure --host=arm-linux-gnueabihf CFLAGS="-mfpu=neon-vfpv4 -mfloat-abi=hard -O3" --prefix=/usr/local
    
  • 编译并安装(用-j2避免Orange Pi资源耗尽):

    make -j2
    sudo make install
    
  • 更新系统库缓存:

    sudo ldconfig
    

2. 修改TensorFlow编译命令,指定链接自定义libpng

在原有Bazel编译命令中,添加链接选项指向新安装的优化版libpng:

bazel build -c opt --compilation_mode=opt \
--copt="-mfpu=neon-vfpv4" \
--copt="-funsafe-math-optimizations" \
--copt="-ftree-vectorize" \
--copt="-fomit-frame-pointer" \
--copt="-std=gnu99" \
--linkopt="-L/usr/local/lib" \
--linkopt="-lpng" \
--local_resources 500,2.0,1.0 \
--verbose_failures \
tensorflow/tools/pip_package:build_pip_package

3. 临时禁用TensorFlow对libpng NEON优化的调用

如果前两种方案无效,可以修改TensorFlow源码跳过NEON函数调用(会损失部分性能,仅作临时方案):

  • 打开tensorflow/core/platform/png/png_io.cc文件
  • 找到调用png_init_filter_functions_neon(png_ptr);的代码段,将其注释:
    // png_init_filter_functions_neon(png_ptr);
    
  • 保存后重新执行原编译命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:53:46