大筋はここの説明に従って進めれば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をビルドすることになる。
そのために以下の作業が必要になる。
- RPiにsmbサーバをインストールし、VMからマウントできるようにする。
- 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_config
のSendEnv 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/
を参照してもらうところがゴール。
対処
-
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)
- VMの
/home/pi/RPI_ROOT/usr/lib/arm-linux-gnueabihf/pkgconfig/opencv.pc
のLibs:
の行を以下に置き換える
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