OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
基於 ARM 的 Linux 系統的交叉編譯

上一篇教程: 在 MacOS 中安裝
下一篇教程: 使用 Ubuntu/Debian 的 MultiArch 交叉編譯

原始作者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;
  • [可選] 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

  1. 建立一個構建目錄,使其成為當前目錄並執行以下命令
    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 ../../..
  2. 在構建 (<cmake_binary_dir>) 目錄中執行 make
    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 原始碼並構建它。