交叉编译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行

相关推荐
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [fs]dcache
linux·数据库·笔记·学习·ubuntu
叮咚侠5 小时前
Ubuntu 24.04.3 LTS 中 vdb 的 UUID 永久挂载没有显示的磁盘的操作步骤
linux·运维·ubuntu·挂载磁盘
HIT_Weston6 小时前
67、【Ubuntu】【Hugo】搭建私人博客(一)
前端·ubuntu·hugo
.小墨迹6 小时前
C++学习之std::move 的用法与优缺点分析
linux·开发语言·c++·学习·算法·ubuntu
风华同学6 小时前
【Linux驱动篇】LED驱动开发实验
linux·驱动开发·ubuntu
石像鬼₧魂石8 小时前
内网渗透靶场 攻击 & 排错命令分类速查表
linux·windows·学习·ubuntu
running up8 小时前
Java集合框架之ArrayList与LinkedList详解
javascript·ubuntu·typescript
AAA_bo110 小时前
liunx安装canda、python、nodejs、git,随后部署私有网页内容提取工具--JinaReader全攻略
linux·python·ubuntu·typescript·aigc·python3.11·jina
叮咚侠10 小时前
Ubuntu 24.04.3 LTS如何扩容逻辑卷
linux·数据库·ubuntu
小张帅三代11 小时前
华为昇腾服务器ubuntu Anaconda安装PyTorch npu 版本 步骤
服务器·pytorch·ubuntu