Raspberry Pi クロスコンパイル

今回はRaspberryPiのクロスコンパイル環境ネタです。

・クロスコンパイル環境構築&カーネルコンパイル

http://www.sea-dog.jp/blog/archives/2012/08/22/19-54.php
見ればOK (´_ゝ`)

違いは
git clone -b rpi-3.6.y https://github.com/raspberrypi/linux.git
でソースコード持ってきて、RPiから zcat /proc/config.gz > .config として .config をカーネルツリーにコピーしました。
(既にRPiのカーネルが3.6.11だったため)
Makefileの4行目を EXTRAVERSION = my に変更。

RPi上でコンパイルすると5~6時間かかりますが、
PhenomII X6 1090T 3.2GHz、メモリ8GBなWIndows7 64bit 上に
割り当て
CPUコア:4
メモリ:2GB
Ubuntuな仮想環境では45分ほどで完了します。

出来上がったファイルは
scp filename pi@192.168.yyy.xxx:/home/pi
で、RPiへ直接転送できます。


・アプリのクロスコンパイル
辺りを参考にすればOK (´_ゝ`)

気付いたら mediatomb が Illegal instruction というエラーを出して
起動できなくなっていたのでクロスコンパイルしてみました。

まずは必要なライブラリ sqlite3、expat をコンパイルします。
./configure --host=arm-unknown-linux-gnueabi --prefix=/home/username/mycross
make
make install
次に mediatomb 本体です。
./configure --host=arm-unknown-linux-gnueabi --prefix=/home/username/mycross --disable-mysql --enable-sqlite3 --disable-rpl-malloc \
    --with-sqlite3-h=/home/username/mycross/include --with-sqlite3-libs=/home/username/mycross/lib \
    --with-expat-h=/home/username/mycross/include   --with-expat-libs=/home/username/mycross/lib \
    CXXFLAGS=-fpermissive
make
スクリプトなども再インストールできなくなっていたので
/var/cache/apt/archives
にある
mediatomb-common_0.12.1-4_armhf.deb
mediatomb-daemon_0.12.1-4_all.deb
を手動で展開してコピーしました。
あとは~DBがサイズ0だったので、mediatombのソースのconfig/sqlite3.sql を
実行してテーブルを作ってやります。

これで動くようになりました。

にしても、なぜ急に動かなくなったのか...
カーネルやライブラリいじくってて、変になってしまったのかな...(;´д`)



0 件のコメント:

コメントを投稿