基于ARM的Linux系統(tǒng)的交叉編譯

2018-08-28 10:39 更新

這些步驟在Ubuntu Linux 12.04上測(cè)試,但應(yīng)適用于其他Linux發(fā)行版。我的其他發(fā)行版的包名稱和交叉編譯工具的名稱可能不同。在ARM平臺(tái)上使用了幾種受歡迎的EABI版本。本教程是針對(duì)gnueabi和gnueabihf編寫的,但其他變體應(yīng)盡可能少的更改。

先決條件

  • Linux主機(jī);
  • Git;
  • CMake 2.6以上;
  • ARM的交叉編譯工具:gcc,libstc ++等。根據(jù)目標(biāo)平臺(tái),您需要選擇gnueabi或gnueabihf工具。為gnueabi安裝命令:
    sudo apt-get install gcc-arm-linux-gnueabi
    gnueabihf的安裝命令:
  • sudo apt-get install gcc-arm-linux-gnueabihf
  • pkgconfig;
  • 用于主機(jī)系統(tǒng)的Python 2.6
  • [可選]用于armeabi(hf)的ffmpeg或libav開發(fā)包:libavcodec-dev,libavformat-dev,libswscale-dev;
  • [可選] GTK + 2.x或更高版本,包括armeabi(hf)的頭文件(libgtk2.0-dev);
  • [可選] libdc1394 2.x;
  • [可選] libjpeg-dev,libpng-dev,libtiff-dev,libjasper-dev for armeabi(hf)。

獲取OpenCV源代碼

您可以使用sourceforge中提供的最新穩(wěn)定的OpenCV版本,也可以從Git存儲(chǔ)庫(kù)中獲取最新的快照。

獲取最新穩(wěn)定的OpenCV版本

從Git Repository獲得最新的OpenCV

啟動(dòng)Git客戶端并克隆OpenCV存儲(chǔ)庫(kù)

在Linux中,可以通過終端中的以下命令來實(shí)現(xiàn):

cd?/ <my_working _directory>
git clone https://github.com/opencv/opencv.git

建立OpenCV

  • 創(chuàng)建一個(gè)構(gòu)建目錄,使其成為當(dāng)前并運(yùn)行以下命令:
cmake [<some optional parameters>] -DCMAKE_TOOLCHAIN_FILE=<path to the OpenCV source directory>/platforms/linux/arm-gnueabi.toolchain.cmake <path to the OpenCV source directory>

工具鏈默認(rèn)使用gnueabihf EABI約定。添加-DSOFTFP = ON cmake參數(shù)以打開softfp編譯器。

cmake [<some optional parameters>] -DSOFTFP=ON -DCMAKE_TOOLCHAIN_FILE=<path to the OpenCV source directory>/platforms/linux/arm-gnueabi.toolchain.cmake <path to the OpenCV source directory>

例如:

cd?/ opencv / platforms / linux
mkdir -p build_hardfp
cd build_hardfp
cmake -DCMAKE_TOOLCHAIN_FILE = .. / arm-gnueabi.toolchain.cmake ../../ ..
  • 在build(<cmake_binary_dir>)目錄中運(yùn)行make:
make
注意
或者您可以通過install / strip make target從創(chuàng)建的庫(kù)中剝離符號(hào)信息。該選項(xiàng)產(chǎn)生較小的二進(jìn)制(兩倍?。?,但使得進(jìn)一步的調(diào)試更加困難。

啟用硬件優(yōu)化

根據(jù)目標(biāo)平臺(tái)架構(gòu),可以使用不同的指令集。默認(rèn)情況下,編譯器將生成不帶VFPv3和NEON擴(kuò)展的armv5l代碼。添加-DENABLE_VFPV3 = ON到cmake命令行以啟用VFPv3的代碼生成和-DENABLE_NEON = ON以使用NEON SIMD擴(kuò)展。

TBB也支持多核ARM SoC。添加-DWITH_TBB = ON和-DBUILD_TBB = ON啟用它。Cmake腳本從官方項(xiàng)目站點(diǎn)http://threadingbuildingblocks.org/下載TBB源并構(gòu)建它。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)