上一篇教程: 在 MacOS 中安裝
下一篇教程: 使用 Ubuntu/Debian 的 MultiArch 交叉編譯
| |
| 原始作者 | 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;
- [可選] GTK+2.x 或更高版本,包括 armeabi(hf) 的標頭檔案 (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 ~/<my_working _directory>
git clone https://github.com/opencv/opencv.git
構建 OpenCV
- 建立一個構建目錄,使其成為當前目錄並執行以下命令
cmake [<一些可選引數>] -DCMAKE_TOOLCHAIN_FILE=<OpenCV 原始碼目錄的路徑>/platforms/linux/arm-gnueabi.toolchain.cmake <OpenCV 原始碼目錄的路徑>
Toolchain 預設使用 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 target 從建立的庫中刪除符號資訊。此選項會生成更小的二進位制檔案(小兩倍),但會使後續除錯更加困難。
啟用硬體最佳化
根據目標平臺架構,可以使用不同的指令集。預設情況下,編譯器為 armv5l 生成程式碼,不帶 VFPv3 和 NEON 擴充套件。將 -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 原始碼並構建它。