imx6ull OpenCV4.5 交叉编译
交叉编译环境
- Ubuntu版本:Ubuntu20.04 64bits
- 交叉编译工具:arm-linux-gnueabihf-
- 硬件平台正点原子IMX6ULL (ALPHA)
准备源码和交叉编译工具链
Linux环境下的编译方法可以参考Opencv安装官网教程
1 | wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip |
交叉编译工具链版本
安装cmake和cmake-gui工具
在命令行使用cmake工具确实很不方便,cmake-gui配置起来比较省时间sudo apt-get install cmake cmake-qt-gui cmake-curses-gui
配置交叉编译环境
- 运行cmake-gui
- 在第一个框输入OpenCV源码路径,在第二个框输入OpenCV编译目录
- 点击
Configure
配置交叉编译环境 - 选择
Spcify options for cross-compile
- 按照下图设置交叉编译工具链
- 点击
Finish
回到cmake-gui主页面,勾选Advanced
配置cmake选项
- 在CMAKE_EXE_LINKER_FLAGS处添加上
-lpthread -lrt -ldl
- 在CMAKE_INSTALL_PREFIX处指定安装目录,如果不指定,它会默认安装到Ubuntu系统目录
/usr/local
下。 - 取消
BUILD_opencv_gapi
选项,不取消这个选项后续编译的时候会报错 - 再依次点击
Configure
,Generate
,击了Generate后看到信息像如下图一样,表明生成成功,一般按照上面配置后基本都不会报错。
编译OpenCV
- 打开之前设置的imx6编译目录,该目录下有刚才生成的Makefile
- 输入
make -j12
开始编译 - 编译完成后输入
make install
,OpenCV的库和头文件会安装到之前设置的CMAKE_INSTALL_PREFIX
目录
编译过程中遇到的错误
1 | /home/tanyd/zdyz/linaro494/arm-linux-gnueabihf/libc/usr/include/features.h:311:52: error: operator '&&' has no right operand #if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 |
解决方法: 在#if defined
前面加上 #define _FILE_OFFSET_BITS 64