imx6ull OpenCV4.5 交叉编译

交叉编译环境

  • Ubuntu版本:Ubuntu20.04 64bits
  • 交叉编译工具:arm-linux-gnueabihf-
  • 硬件平台正点原子IMX6ULL (ALPHA)

准备源码和交叉编译工具链

Linux环境下的编译方法可以参考Opencv安装官网教程

1
2
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
unzip opencv.zip

交叉编译工具链版本

安装cmake和cmake-gui工具

在命令行使用cmake工具确实很不方便,cmake-gui配置起来比较省时间
sudo apt-get install cmake cmake-qt-gui cmake-curses-gui

配置交叉编译环境

  1. 运行cmake-gui
  2. 在第一个框输入OpenCV源码路径,在第二个框输入OpenCV编译目录
  3. 点击Configure配置交叉编译环境
  4. 选择Spcify options for cross-compile
  5. 按照下图设置交叉编译工具链
  6. 点击Finish回到cmake-gui主页面,勾选Advanced

配置cmake选项

  1. 在CMAKE_EXE_LINKER_FLAGS处添加上-lpthread -lrt -ldl
  2. 在CMAKE_INSTALL_PREFIX处指定安装目录,如果不指定,它会默认安装到Ubuntu系统目录/usr/local下。
  3. 取消BUILD_opencv_gapi选项,不取消这个选项后续编译的时候会报错
  4. 再依次点击ConfigureGenerate,击了Generate后看到信息像如下图一样,表明生成成功,一般按照上面配置后基本都不会报错。

编译OpenCV

  1. 打开之前设置的imx6编译目录,该目录下有刚才生成的Makefile
  2. 输入make -j12开始编译
  3. 编译完成后输入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

参考链接

  1. 正点原子IMX6ULL移植OpenCV3.4.1
  2. imx6ull编译opencv4.4问题整理