Mono と F# を CentOS/Debian 上でビルドしている途中

なぜか、現状の Raspberry Pi 上では

という状態で、このテストエラーは Xamarin Bug  https://bugzilla.xamarin.com/show_bug.cgi?id=17654 を見ると直っているらしい。この現象自体は Mono 3.2.7 で発生しているので、手元の Mono 3.2.8 は大丈夫なはずなんだけど、同じようにダメ。おそらく RasPi にあるレポジトリが何らかのタイミングで古いのではないか?と思のだが…これを、RasPi 上でビルドするとえらい時間がかかる。6時間かかってもまだ Mono のビルドが終わらない。

まだまだ掛かりそうなので、その前に Mono 3.2.7 と F# 3.1 の組みあわせが Linux 上で動くかどうか確認しておこう。RasPi の CPU は、ARM1176JZF-S なので ARM になる。F# のアセンブリがそのまま動けばいいのだが…これはどうなんだろう?中身は機種依存していない感じなんだが。

■CentOS に g++ を入れる

sudo yum install gcc-g++

最新の CentOS には apt-get が使えなくなっているそうなので yum を使う。手元の Raspberry Pi は http://www.raspberrypi.org/downloads/ から RASPBIAN Debian Wheezy を使っているのでそれに揃えればいいのだが…いや、一旦そろえてみよう。

CentOS 上では Mono 3.2.7 はビルドできるのだが(多々エラーがでているのが気になるけど)、その後、F# 側で ./autogen.sh –prefix /usr すると、

[masuda@centos fsharp]$ ./autogen.sh --prefix /usr
checking whether make sets $(MAKE)... yes
checking for pkg-config... /usr/bin/pkg-config
configure: "pkg-config: /usr/bin/pkg-config"
configure: "PKG_CONFIG_LIBDIR: "
configure: error: "You need mono 3.0"
[masuda@centos fsharp]$

になって詰む。ピンポイントで mono 3.0.x が必要なのだろうか?

■Debian で Mono/F# をビルドする。

Debian のレポジトリには F# パッケージがあるのだが、http://fsharp.org/use/linux/ に従って Mono からビルドしていく。コマンド自体も apt-get が使えるのでそのままコピペしながら実行。途中でたらたらと Mono をビルドしている Raspberry Pi を追い抜いて、F# のビルドまで実行している途中。あっさり、Mono 3.2.7 の問題もスルーしていったので、おそらく Raspberry Pi のレポジトリにある Mono が古いバージョンなのかもしれない。

■Respberry Pi で mono のビルドが続く

約15時間ほどかけて Raspberry Pi 上で Mono のビルドが完了。USB メモリ上でやっているので、アクセスが遅くてビルドが遅いという話もある。8GB の SD メモリを使うと幾分はやいかも。

続けて F# のビルドに入るのだが、早々に Mono 3.2.7 の問題をクリアした。やっぱり Raspberry Pi レポジトリの Mono パッケージがおかしいらしい。OS のバージョンとかもあるのかもしれないが、それぞれの最新版で作ると通るので、ひとまず安心。

カテゴリー: F#, RaspberryPi パーマリンク