3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

openFrameworksのクロスコンパイル環境を整える(Mac -> RaspberryPi)

Last updated at Posted at 2016-12-26

大筋はここの説明に従って進めればOKです。
つまづいたところだけ解説します。
リアルタイムに四苦八苦していたTweetの記録はこちらから。

環境

Raspberry Pi 3 Model B with Debian Jessie(以下RPi3)
Mac OSX 10.10.5
VirtualBox5.1.12
openFrameworks0.9.8 for armv6

概要

最終的にはMac上で動くVMにDebianをインストールしてビルド環境を整え、RPi上にあるoFをビルドすることになる。
概略
そのために以下の作業が必要になる。

  1. RPiにsmbサーバをインストールし、VMからマウントできるようにする。
  2. VMのDebianにoFのビルド環境を整える。

つまづいたところ

Debian Live

ここからOSイメージをダウンロードしてVirtualBoxで作ったDebian64bitの仮想マシンに読ませて設定を進めていたのだけど、再度起動したら設定が全部消えてた。
どうやら起動して最初のメニューにあるLiveだとだめで、Installを選ばないといけないらしい。
https://twitter.com/nariakiiwatani/status/811861496531517440

VMのネットワークの設定

VM->RPiの接続をするには、当然VMとRPiが同じネットワーク上になくてはいけない。
VMが所属するネットワークは、VirtualBoxで設定する。
ネットワーク設定
割り当て : VMとMacの接続の形態(?)。ホストオンリーアダプターを選択しろという情報もあったが、筆者の環境では選べなかった。
名前 : VMがMacのどのネットワークインターフェースに接続されるか。ここを、RPiがいるネットワークにしないといけない。筆者はThunderbost Ethernetで有線接続していたのでこうなった。例えばRPiもMacも同じ無線ネットワーク上にいるならen0: Wi-Fi(AirPort)とかを選ぶと良い。

VMのDebianでifconfigができない

VMのDebianのコンソールにはコピペできないので、Macからターミナル経由でSSH接続して動かしたいのだけど、そのためにDebianのIPアドレスを知りたくてifconfigを打ち込んだらcommand not found
どうやらパスが通っていないだけだったので/sbin/ifconfigで解決。
http://d.hatena.ne.jp/srkzhr/20071004/1191461815

oFのビルドはできるが実行ができない

ビルドしたプログラムをmake runするとlocale::facet::_S_create_c_locale name not validというエラーが出て落ちる。
はっきり原因までたどり着いていないのだが、このページにあるように、RPiがSSH接続される際にクライアント(Mac)とlocaleを合わせようとするのが原因?らしい。
RPiの/etc/ssh_configSendEnv LANG~の行をコメントアウトして解決。
https://twitter.com/nariakiiwatani/status/812157918397140992

(2016/12/17追記)OpenCV関連のライブラリがリンクできない

opencvExampleをビルドしようとしたら失敗した。
試行錯誤実況はこちらから。

エラーメッセージ

arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_calib3d.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_contrib.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_core.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_features2d.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_flann.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_gpu.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_highgui.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_imgproc.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_legacy.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_ml.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_objdetect.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_ocl.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_photo.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_stitching.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_superres.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_ts.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_video.so: そのようなファイルやディレクトリはありません
arm-linux-gnueabihf-g++: エラー: /usr/lib/arm-linux-gnueabihf/libopencv_videostab.so: そのようなファイルやディレクトリはありません

方針

VMには/usr/lib/arm-linux-gnueabihf/というフォルダがそもそもない。
リンカに/home/pi/RPI_ROOT/usr/lib/arm-linux-gnueabihf/を参照してもらうところがゴール。

対処

  1. OF_ROOT/libs/openFrameworksCompiled/project/makefileCommon/config.project.mkの230行目を以下に置き換える

OF_CORE_LIBS += $(shell export PKG_CONFIG_DIR=$(PKG_CONFIG_DIR);export PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR);export PKG_CONFIG_SYSROOT_DIR=$(PKG_CONFIG_SYSROOT_DIR);$(PLATFORM_PKG_CONFIG) "$(CORE_PKG_CONFIG_LIBRARIES)" --libs)

  1. VMの/home/pi/RPI_ROOT/usr/lib/arm-linux-gnueabihf/pkgconfig/opencv.pcLibs:の行を以下に置き換える

Libs: -L${libdir} -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?