本文特点:在线上资源中,已有诸多关于OpenCV移植至RV1106平台的文章分享。本文核心聚焦于使用cmake-gui进行编译时遭遇的各类报错现象,详细记录了解决这些编译错误的策略与步骤,并在此基础上对相关配置选项的关键知识点进行了简洁提炼和总结。
一、环境:
ubuntu18 x64
RV1126交叉编译工具链
cmak v3.10
opencv4.7
二、编译方式概述: 采用 cmake-gui + Specify options for cross-compiling
尽管一些文章声称这种方法难以奏效,但实际上它完全可行。本节将直接呈现基于正确配置的完整流程概述,并在后续内容中列举出因缺失这些关键配置步骤而可能引发的各种错误示例,以供参考和对照。
三、编译过程:
1、下载opencv源码解压,安装并打开cmake.
2、修改Opencv中cmake/OpenCVDetectCXXCompiler.cmake 文件,在首行添加 set(CMAKE_SYSTEM_PROCESSOR “arm”) 语句(后文再讲为什么)
3、打开cmake-gui 按如下要求选项进行配置
Operating System / Version/Processor 这三者只有 VersIon需要定义,因为上文我们修改过OpenCVDetectCXXCompiler.cmake 所以 Processor 可选择性填写。
点击完成后 ,相关配置就改好了。再点击Generate之前,需要再配置下安装路径,也方便后面好取用库。
这里取消掉Test相关编译 ,Test耗时,我也用不到。
本文是C++,所以取消python和JAVA编译
4、再次点击Configure 完成后点击Generate
成功生成
.
四、编译测试
进入之前配置的 build_RV1126TEST 文件夹,直接make -j8
确认正常编译100%后,再make install
即可在之前配置的路径下找到打包好的头文件和库。
.
.
.
.
.
.
五、配置分析:
1、前文讲在cmake/OpenCVDetectCXXCompiler.cmake 文件,在首行添加 set(CMAKE_SYSTEM_PROCESSOR “arm”) 。这里我们先看下另一个文件的内容
/media/opencv/opencv-4.7.0/build_RV1126TEST/CMakeFiles/3.10.2/CMakeSystem.cmake
该CMake配置文件是由CMake图形用户界面(cmake-gui)工具自动生成的,其中上半部分详述了宿主机Ubuntu系统的相关属性信息,而下半部分则涉及目标平台RV1126的关键配置项。值得注意的是,在生成的配置中,CMAKE_SYSTEM_PROCESSOR变量未得到正确设定,其值为空,这一点与我们先前预期为RV1126架构进行的交叉编译配置有所出入。
由于CMAKE_SYSTEM_PROCESSOR这一核心变量未能识别出目标处理器架构,OpenCV在后续的编译阶段将无法针对性地进行适配配置,从而可能导致一系列与架构相关的编译错误发生。
因此,为确保OpenCV能够顺利无误地针对RV1126平台进行编译,我们在OpenCVDetectCXXCompiler.cmake文件中采取了手动干预措施,直接将CMAKE_SYSTEM_PROCESSOR变量明确赋值为“arm”——这是RV1126平台所采用的处理器架构。需要强调的是,对于不同平台而言,CMAKE_SYSTEM_PROCESSOR的定义应相应调整;OpenCV支持多种平台,并且在OpenCVDetectCXXCompiler.cmake中的相关判断区域内可以找到对不同架构的支持情况。通过这种方式修正后,后续的编译流程得以平稳推进并成功完成。
ps:若本文有幸获得读者关注,敬请不吝赐教。我将抽空进一步撰写关于OPENMP与TBB的联合编译过程及其在RV1126平台上实际测试效果的分析报告。