RK3588 源码编译 opencv

从你的输出信息来看,系统已经安装了 libpng 1.6.37(最新版本),但 OpenCV 4.8.1 在编译时仍然找不到 png_set_longjmp_fnpng_get_eXIf_1 等符号。这表明 CMake 可能没有正确链接到系统的 libpng 库,或者 OpenCV 的编译配置存在问题。


解决方案

1. 检查 libpng 是否包含所需符号

运行以下命令,确认 libpng.so 是否包含 OpenCV 需要的符号:

nm -D /usr/lib/aarch64-linux-gnu/libpng.so | grep png_set_longjmp_fn
nm -D /usr/lib/aarch64-linux-gnu/libpng.so | grep png_get_eXIf_1
  • 如果有输出(如 T png_set_longjmp_fn),说明库没问题,问题出在链接阶段。
  • 如果没有输出,说明你的 libpng 版本可能不完整(尽管 dpkg 显示已安装最新版)。

2. 确保 CMake 正确找到 libpng

OpenCV 可能链接到了错误的 libpng 版本,或者 PNG_INCLUDE_DIR 设置不正确。手动指定路径:

cd ~/opencv-4.8.1/build
rm -rf CMakeCache.txt CMakeFiles  # 清理旧配置
cmake \
    -DWITH_PNG=ON \
    -DPNG_LIBRARY=/usr/lib/aarch64-linux-gnu/libpng.so \
    -DPNG_PNG_INCLUDE_DIR=/usr/include/libpng16 \
    ..
  • PNG_LIBRARY:确保指向正确的 .so 文件(通常是 /usr/lib/aarch64-linux-gnu/libpng.so)。
  • PNG_PNG_INCLUDE_DIR:确保包含 png.h(通常是 /usr/include/libpng16)。

你可能感兴趣的:(opencv,人工智能,计算机视觉)