首页 > 技术知识 > 正文

项目需求。需要在rk3568开发环境中使用opencv。所有要编译出opencv的库文件。步骤记录如下:

1、下载opencv源码下载(本人下载的是3.4.5)Releases – OpenCV

2、安装cmake-gui 。使用sudo snap install cmake —classic

3、cmake-gui使用参考海思hi3516dv300开发—编译Opencv – 知乎

4、生成makefile,make后出现如下错误:

瑞芯微rk3568中 编译opencv并配置环境变量-瑞芯微rk3588芯片应用在哪里

解决方法:

进入opencv目录下的3rdparty的对应目录CMakeFiles/ *.dir下,打开flags.make,在C_FLAGS = 后添加-O3 -fPIC用来支持在64位机上编译 如../3rdparty/zlib/CMakeFiles/zlib.dir/flags.make 修改C_FLAGS =-W -Wall 为 C_FLAGS =-O3 -fPIC-W -Wall 和 修改CXX_FLAGS =-W -Wall 为 C_FLAGS =-O3 -fPIC-W -Wall

5、继续编译出现 undefined reference to ‘pthread_key_delete’

瑞芯微rk3568中 编译opencv并配置环境变量-瑞芯微rk3588芯片应用在哪里1

解决方法:

原因是cmake不认识我定义的arm-linux系统标记,没有加上库pthread和rt的链接选项 此时需要修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt

6、继续make 出现undefined reference to ‘png_init_filter_functions_neon’等

瑞芯微rk3568中 编译opencv并配置环境变量-瑞芯微rk3588芯片应用在哪里2

解决方法:

修改 ${HOME}/opencv-3.3.1/3rdparty/libpng/pngpriv.h 128 /*# if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \*/ 129 # if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \

7、继续make 出现undefined reference to ‘dladdr’等错误

瑞芯微rk3568中 编译opencv并配置环境变量-瑞芯微rk3588芯片应用在哪里3

解决方法:需要在cmake-gui中去除WITH_LAPACK

版权声明:本文为CSDN博主「DSZS123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/dongshizhishui/article/details/121721495

猜你喜欢