上一教程: MacOS安装
下一教程: 使用Ubuntu/Debian进行多架构交叉编译
| |
原作者 | Alexander Smorkalov |
兼容性 | OpenCV >= 3.0 |
- 警告
- 本教程可能包含过时信息。
这些步骤已在Ubuntu Linux 12.04上测试,但应该适用于其他Linux发行版。对于其他发行版,包名称和交叉编译工具的名称可能不同。ARM平台上使用了多个流行的EABI版本。本教程针对gnueabi和gnueabihf编写,但其他变体只需少量修改即可工作。
预备条件
- 具有Linux系统的宿主机;
- Git;
- CMake 2.6或更高版本;
- ARM的交叉编译工具:gcc,libstc++等。根据目标平台,您需要选择gnueabi或gnueabihf工具。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
- 创建一个构建目录,将其设置为当前目录,然后运行以下命令:
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 ../../..
- 在构建(<cmake_binary_dir>)目录中运行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源代码并构建它。