前のチュートリアル: 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
- [省略可能] 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 ~/<my_working _directory>
git clone https://github.com/opencv/opencv.git
OpenCVのビルド
- ビルドディレクトリを作成し、そこをカレントにして次のコマンドを実行する:
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>
ツールチェーンはデフォルトでgnueabihf EABI規約を使用する。softfpコンパイラに切り替えるには、cmake引数に -DSOFTFP=ON を追加する。 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 ../../..
- ビルドディレクトリ (<cmake_binary_dir>) で make を実行する:
- 覚え書き
- 必要に応じて、install/strip の make ターゲットを使って、作成されたライブラリからシンボル情報を取り除くことができる。このオプションを使うとバイナリは小さくなる(半分のサイズになる)が、その後のデバッグが難しくなる。
ハードウェア最適化を有効にする
ターゲットプラットフォームのアーキテクチャに応じて、異なる命令セットを使用できる。デフォルトでは、コンパイラはVFPv3とNEON拡張を使わないarmv5l向けのコードを生成する。VFPv3向けのコード生成を有効にするにはcmakeのコマンドラインに -DENABLE_VFPV3=ON を、NEON SIMD拡張を使用するには -DENABLE_NEON=ON を追加する。
TBBはマルチコアのARM SoCでもサポートされている。有効にするには -DWITH_TBB=ON と -DBUILD_TBB=ON を追加する。cmakeスクリプトは公式プロジェクトサイト http://threadingbuildingblocks.org/ からTBBのソースをダウンロードしてビルドする。