项目需要,需要在hisi 3516/3519上面交叉编译OpenCV。
遇到的坑是: 默认cmake ***..(比如cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=../output -D CMAKE_C_COMPILER=arm-himix200-linux-gcc -D CMAKE_CXX_COMPILER=arm-himix200-linux-g++ -D BUILD_SHARED_LIBS=OFF ../)交叉编译的bin文件依赖于 -lgthread-2.0 -lglib-2.0 等,如果要编译缺失的库,又要引入一堆其它依赖(-lgthread-2.0 好像没有独立的代码,是在依赖于庞大的gtk中),而且我们使用时候也不需要那些bin文件
解决方法:可以cmake时候加入 -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_opencv_apps=OFF 这些选项,编译完成后就不会生成***test***, ***perf****的二进制文件了
还有一个坑:缺少exception_ptr的问题,这个需要手动修改下 modules/core/include/opencv2/core/detail/exception_ptr.hpp文件,直接定义下 #define CV__EXCEPTION_PTR 0就可以了
其它一些缺少ippicv,缺少libz.h等小问题就不写了,网上搜就可以
参考:https://docs.opencv.org/master/d0/d76/tutorial_arm_crosscompile_with_cmake.html