交叉编译opencv4.5.4出现与 libpng 相关的 NEON 优化函数未能找到

编译错误:

/home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to `png_do_expand_palette_rgb8_neon'

/home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to `png_init_filter_functions_neon'

/home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to `png_do_expand_palette_rgba8_neon'

/home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to `png_riffle_palette_neon'

collect2: 错误: ld 返回 1

make[2]: *** [apps/model-diagnostics/CMakeFiles/opencv_model_diagnostics.dir/build.make:98:bin/opencv_model_diagnostics] 错误 1

make[1]: *** [CMakeFiles/Makefile2:1506:apps/model-diagnostics/CMakeFiles/opencv_model_diagnostics.dir/all] 错误 2

make[1]: *** 正在等待未完成的任务....

100%\] Building CXX object apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/rotationConverters.cpp.o \[100%\] Linking CXX executable ../../bin/opencv_version /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_do_expand_palette_rgb8_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_init_filter_functions_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_do_expand_palette_rgba8_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_riffle_palette_neon' collect2: 错误: ld 返回 1 make\[2\]: \*\*\* \[apps/version/CMakeFiles/opencv_version.dir/build.make:98:bin/opencv_version\] 错误 1 make\[1\]: \*\*\* \[CMakeFiles/Makefile2:1480:apps/version/CMakeFiles/opencv_version.dir/all\] 错误 2 \[100%\] Linking CXX executable ../../bin/opencv_annotation /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_do_expand_palette_rgb8_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_init_filter_functions_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_do_expand_palette_rgba8_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_riffle_palette_neon' collect2: 错误: ld 返回 1 make\[2\]: \*\*\* \[apps/annotation/CMakeFiles/opencv_annotation.dir/build.make:98:bin/opencv_annotation\] 错误 1 make\[1\]: \*\*\* \[CMakeFiles/Makefile2:1402:apps/annotation/CMakeFiles/opencv_annotation.dir/all\] 错误 2 \[100%\] Linking CXX executable ../../bin/opencv_visualisation /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_do_expand_palette_rgb8_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_init_filter_functions_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_do_expand_palette_rgba8_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_riffle_palette_neon' collect2: 错误: ld 返回 1 make\[2\]: \*\*\* \[apps/visualisation/CMakeFiles/opencv_visualisation.dir/build.make:98:bin/opencv_visualisation\] 错误 1 make\[1\]: \*\*\* \[CMakeFiles/Makefile2:1428:apps/visualisation/CMakeFiles/opencv_visualisation.dir/all\] 错误 2 \[100%\] Linking CXX executable ../../bin/opencv_interactive-calibration /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_do_expand_palette_rgb8_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_init_filter_functions_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_do_expand_palette_rgba8_neon' /home/lm/software/all_toolchains/rk-linux/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: ../../lib/libopencv_world.so.4.5.4: undefined reference to \`png_riffle_palette_neon' collect2: 错误: ld 返回 1 make\[2\]: \*\*\* \[apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/build.make:178:bin/opencv_interactive-calibration\] 错误 1 make\[1\]: \*\*\* \[CMakeFiles/Makefile2:1454:apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/all\] 错误 2 make: \*\*\* \[Makefile:166:all\] 错误 2

  • png_do_expand_palette_rgb8_neon
  • png_init_filter_functions_neon
  • png_do_expand_palette_rgba8_neon
  • png_riffle_palette_neon

解决:

打开opencv源码目录,编辑文件 vim 3rdparty/libpng/pngpriv.h

第130行注释掉, 修改为131行

相关推荐
HIT_Weston8 小时前
95、【Ubuntu】【Hugo】搭建私人博客:_default&partials
linux·运维·ubuntu
论迹10 小时前
【Git】-- Git安装 & 卸载(ubuntu)
git·ubuntu·elasticsearch
论迹11 小时前
【Git】-- Git基本操作
git·ubuntu
相偎11 小时前
Ubuntu搭建svn服务器
服务器·ubuntu·svn
oMcLin14 小时前
如何在Ubuntu 22.04 LTS上配置并优化MySQL 8.0分区表,提高大规模数据集查询的效率与性能?
android·mysql·ubuntu
朝阳58114 小时前
Ubuntu 22.04 安装 Fcitx5 中文输入法完整指南
linux·运维·ubuntu
永远在Debug的小殿下15 小时前
wsl安装Ubuntu and ROS2
linux·运维·ubuntu
Ephemeral Memories16 小时前
ubuntu安装软件失败以及运行闪退
linux·ubuntu
linweidong17 小时前
在Ubuntu新版本安装gcc4.8等老版本环境
linux·运维·ubuntu
知识分享小能手18 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 中安装 Docker 容器 —— 知识点详解(26)
学习·ubuntu·docker