OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
基于ARM的Linux系统的交叉编译

上一教程: MacOS安装
下一教程: 使用Ubuntu/Debian进行多架构交叉编译

原作者Alexander Smorkalov
兼容性OpenCV >= 3.0
警告
本教程可能包含过时信息。

这些步骤已在Ubuntu Linux 12.04上测试,但应该适用于其他Linux发行版。对于其他发行版,包名称和交叉编译工具的名称可能不同。ARM平台上使用了多个流行的EABI版本。本教程针对gnueabignueabihf编写,但其他变体只需少量修改即可工作。

预备条件

  • 具有Linux系统的宿主机;
  • Git;
  • CMake 2.6或更高版本;
  • ARM的交叉编译工具:gcc,libstc++等。根据目标平台,您需要选择gnueabignueabihf工具。gnueabi的安装命令:
    sudo apt-get install gcc-arm-linux-gnueabi
    gnueabihf的安装命令:
    sudo apt-get install gcc-arm-linux-gnueabihf
  • pkgconfig;
  • 宿主机系统的Python 2.6;
  • 【可选】armeabi(hf)的ffmpeg或libav开发包:libavcodec-dev,libavformat-dev,libswscale-dev;
  • 【可选】armeabi(hf)的GTK+2.x或更高版本,包括头文件 (libgtk2.0-dev);
  • 【可选】libdc1394 2.x;
  • 【可选】armeabi(hf)的libjpeg-dev,libpng-dev,libtiff-dev,libjasper-dev。

获取OpenCV源代码

您可以使用sourceforge上提供的最新稳定版OpenCV,也可以从我们的Git仓库获取最新快照。

获取最新的稳定版OpenCV

从Git仓库获取最新的OpenCV

启动Git客户端并克隆OpenCV仓库

在Linux中,可以在终端使用以下命令:

cd ~/<我的工作目录>
git clone https://github.com/opencv/opencv.git

构建OpenCV

  1. 创建一个构建目录,将其设置为当前目录,然后运行以下命令:
    cmake [<一些可选参数>] -DCMAKE_TOOLCHAIN_FILE=<OpenCV源代码目录路径>/platforms/linux/arm-gnueabi.toolchain.cmake <OpenCV源代码目录路径>
    工具链默认使用gnueabihf EABI约定。添加-DSOFTFP=ON cmake参数以启用softfp编译器。
    cmake [<一些可选参数>] -DSOFTFP=ON -DCMAKE_TOOLCHAIN_FILE=<OpenCV源代码目录路径>/platforms/linux/arm-gnueabi.toolchain.cmake <OpenCV源代码目录路径>
    例如:
    cd ~/opencv/platforms/linux
    mkdir -p build_hardfp
    cd build_hardfp
    cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake ../../..
  2. 在构建(<cmake_binary_dir>)目录中运行make
    make
注意
您可以通过install/strip make目标从生成的库中剥离符号信息。此选项会生成更小的二进制文件(大小减半),但会使进一步调试更加困难。

启用硬件优化

根据目标平台架构,可以使用不同的指令集。默认情况下,编译器会为不带VFPv3和NEON扩展的armv5l生成代码。将-DENABLE_VFPV3=ON添加到cmake命令行以启用VFPv3的代码生成,并将-DENABLE_NEON=ON添加到cmake命令行以使用NEON SIMD扩展。

TBB也支持多核ARM SoC。添加-DWITH_TBB=ON和-DBUILD_TBB=ON以启用它。Cmake脚本会从官方项目网站http://threadingbuildingblocks.org/下载TBB源代码并构建它。