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

大筋は[ここ](https://forum.openframeworks.cc/t/cross-compiler-for-of-0-9-0-jessie-arm6-rpi1/21336)の説明に従って進めればOKです。
つまづいたところだけ解説します。
リアルタイムに四苦八苦していたTweetの記録は[こちら](https://twitter.com/search?f=tweets&q=since_id%3A811764424746774528%20max_id%3A813170922949459968%20from%3Anariakiiwatani&src=typd)から。

# 環境
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をビルドすることになる。
![概略](https://qiita-image-store.s3.amazonaws.com/0/16556/e61cb329-4414-4fe6-c7be-23318f472a9e.png)
そのために以下の作業が必要になる。
1. RPiにsmbサーバをインストールし、VMからマウントできるようにする。
2. VMのDebianにoFのビルド環境を整える。

# つまづいたところ
## Debian __Live__
[ここ](https://www.debian.org/CD/live/index.ja.html)からOSイメージをダウンロードしてVirtualBoxで作ったDebian64bitの仮想マシンに読ませて設定を進めていたのだけど、再度起動したら設定が全部消えてた。
どうやら起動して最初のメニューにある`Live`だとだめで、`Install`を選ばないといけないらしい。
https://twitter.com/nariakiiwatani/status/811861496531517440

## VMのネットワークの設定
VM->RPiの接続をするには、当然VMとRPiが同じネットワーク上になくてはいけない。
VMが所属するネットワークは、VirtualBoxで設定する。
<img width="774" alt="ネットワーク設定" src="https://qiita-image-store.s3.amazonaws.com/0/16556/05ab9566-d541-55bc-21d2-eb64c5653b6a.png">
割り当て : 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`というエラーが出て落ちる。
はっきり原因までたどり着いていないのだが、[このページ](http://seafoid.org/2013/02/raspberry-pi-ssh-locale/)にあるように、RPiがSSH接続される際にクライアント（Mac）とlocaleを合わせようとするのが原因？らしい。
RPiの`/etc/ssh_config`の`SendEnv LANG~`の行をコメントアウトして解決。
https://twitter.com/nariakiiwatani/status/812157918397140992

## (2016/12/17追記）OpenCV関連のライブラリがリンクできない
opencvExampleをビルドしようとしたら失敗した。
試行錯誤実況は[こちら](https://twitter.com/search?f=tweets&q=since_id%3A813666984134967296%20max_id%3A813716873883762688%20from%3Anariakiiwatani&src=typd)から。

### エラーメッセージ

```
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)`

2. 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`