嵌入式开发—交叉编译OpenCV

  • 编译平台:Ubuntu18.04 x86平台
  • 目标平台:ZYNQ-7100 Ubuntu20 ARM
  • 交叉编译工具:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.
  • 方式:使用cmake-gui进行交叉编译。(好像还有一种是在CMakeLists.txt中将gcc编译器设置为交叉编译工具,没研究过。)

一、交叉编译工具的下载和使用

1. 下载

下载地址:https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/
嵌入式开发—交叉编译OpenCV

我选择的是7.5版本,64位。可根据实际需要更换。如果自己的ARM平台是32位,可以用32位编译器,也可以用64位的编译器;但如果ARM是64位,只能用64位的编译器编译。(向下兼容) 可以退到上一层目录,选择对应的32位编译器目录,如下图所示。

嵌入式开发—交叉编译OpenCV

2. 使用

  1. 下载完成之后,解压到自己选定的目录(这里假设解压目录为 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu )
    请添加图片描述
  2. 接下来,在终端输入 cmake-gui 打开cmake的界面窗口(前提是你必须安装了cmake-gui,这里不赘述),如下图,第一栏选择opencv的源码目录,第二栏选择一个自己创建的用于存放编译文件的临时目录。
    请添加图片描述
  3. 点击Configure,弹框中选择最后一项。
    请添加图片描述
  4. 点击Next进入到如下界面。
  • Operating System填写为Linux
  • Compliers中C的编译器选择 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
  • Compliers中C++的编译器选择 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
  • Target Root填写为 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
  • 最后点击Finish。
  • C和C++的编译器路径就在自己交叉编译工具解压目录中的bin文件夹中进行选择
  • 看有些博客也说Target Root 应该填对应的include和lib所在文件夹,在这里就是 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/aarch64-linux-gnu 。但是这两种目前都可以,应该是有某种深意我还没有接触到,之后碰到再补充吧。

请添加图片描述
5. 开始编译

  • 点击Finish之后,它会自己进行一次Configure,一般没有问题,会Configure Done。
  • 然后自己修改 CMAKE_INSTALL_PREFIX 配置项,可以修改为自己指定的安装目录,方便之后直接复制到ARM中。
  • 修改完成后,再点击一次Configure,Configure Done
  • 再点击Generate,Generate Done
  • 这个时候,就去那个临时目录下打开终端,输入 make 指令开始编译
  • 编译完成后, make isntall 安装到自己指定的安装目录,复制到ARM中即可。

3. 错误及解决方案

  1. 注意自己ARM对应是32位还是64位,交叉编译工具千万不能弄错。
  2. 在编译过程中,遇到了下图所示的问题。参考博主的解决方法,成功解决!
    https://blog.csdn.net/u010571709/article/details/122103591
    请添加图片描述

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年4月6日
下一篇 2022年4月6日