项目需求。需要在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后出现如下错误:
????????
解决方法:
进入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'
解决方法:
原因是cmake不认识我定义的arm-linux系统标记,没有加上库pthread和rt的链接选项
此时需要修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt
6、继续make 出现undefined reference to 'png_init_filter_functions_neon'等
?解决方法:
修改
${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'等错误
解决方法:需要在cmake-gui中去除WITH_LAPACK?
|