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

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

make1: *** CMakeFiles/Makefile2:1506:apps/model-diagnostics/CMakeFiles/opencv_model_diagnostics.dir/all 错误 2

make1: *** 正在等待未完成的任务....

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

make2: *** apps/version/CMakeFiles/opencv_version.dir/build.make:98:bin/opencv_version 错误 1

make1: *** 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

make2: *** apps/annotation/CMakeFiles/opencv_annotation.dir/build.make:98:bin/opencv_annotation 错误 1

make1: *** 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

make2: *** apps/visualisation/CMakeFiles/opencv_visualisation.dir/build.make:98:bin/opencv_visualisation 错误 1

make1: *** 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

make2: *** apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/build.make:178:bin/opencv_interactive-calibration 错误 1

make1: *** CMakeFiles/Makefile2:1454:apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/all 错误 2

make: *** Makefile:166:all 错误 2

libopencv_world.so.4.5.4 依赖了以下几个符号:

  • 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行

相关推荐
北城笑笑4 小时前
Server 18 ,Nginx + Vite 前端部署排错实战:从 `/api/gpt/chat` 404 到 9012 后端服务的完整定位过程
linux·运维·前端·nginx·ubuntu·vue
小小的木头人5 小时前
Ubuntu 20.04 离线安装最新版 Firefox 浏览器
ubuntu·firefox
时空无限19 小时前
ubuntu dpkg -l 输出第一列解释
linux·运维·ubuntu
叮咚侠21 小时前
Ubuntu 24.04 安装zabbix-agent 5.0 服务
linux·ubuntu·zabbix·zabbix-agent
bosins1 天前
将 Hyper-V 上的 Ubuntu 虚拟机内容迁移到 WSL (Windows Subsystem for Linux) 中
linux·windows·ubuntu
Matt今年18岁1 天前
自动检测校园网状态,自动联网并恢复 Ubuntu 下的 ToDesk 连接
运维·服务器·开发语言·pytorch·python·ubuntu
王坊兴1 天前
Ubuntu 部署产品原型静态服务器:SFTP + Nginx
服务器·nginx·ubuntu
breeze jiang1 天前
TypeScript 工具类型怎么记:从 Pick、Omit 到 keyof 与 Exclude 推导
linux·ubuntu·typescript
运维全栈笔记1 天前
Ubuntu 24.04 Certbot 自动化SSL证书配置指南
linux·运维·服务器·nginx·ubuntu·自动化·ssl
我是小灰灰吖1 天前
Qt 6.9.3 Ubuntu 22.04 虚拟键盘显示问题全记录与解决方案
linux·qt·ubuntu