Mono 3.10 のビルド・インストール – 総武ソフトウェア推進所を参考にして、 CentOS 6 に Mono 3.10 をインストールしたので、その過程を残しておきたいと思います。
今回は Mono がもともと入っていない環境で、インストール先フォルダのオプションは使用していません。
libgdiplus (3.8) のインストール
libgdiplus は、 Windows Forms などを動かすのに必要となるライブラリです。
必須ではないのですが、 C# を使うならばインストールしておくといいと思います。
依存パッケージのインストール
1 2 3 4
| $ sudo yum install \ cairo-devel libexif-devel freetype-devel fontconfig-devel \ glib2-devel libjpeg-devel libpng-devel libtiff-devel \ giflib-devel libX11-devel libXrender-devel
|
ソースコードの取得とコンパイル準備
1 2 3 4
| $ wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-3.8.tar.gz $ tar -xvf libgdiplus-3.8.tar.gz $ cd libgdiplus-3.8/ $ ./configure
|
コンパイルとインストール
1 2
| $ make $ sudo make install
|
Mono 本体(3.10)のインストール
Mono のコンパイルには時間がかかりました。コンソールを見て待つのではなく、別の作業をするのをオススメします。
依存パッケージのインストール
1
| $ sudo yum install bison
|
ソースコードの取得とコンパイル準備
1 2 3 4
| $ wget http://download.mono-project.com/sources/mono/mono-3.10.0.tar.bz2 $ tar -xvf mono-3.10.0.tar.bz2 $ cd mono-3.10.0/ $ ./configure --prefix=/opt/mono/3.10/ --with-libgdiplus=installed --with-ikvm-native=no --with-monotouch=no --with-monodroid=no --with-xammac=no --with-mcs-docs=no --with-x
|
コンパイルとインストール
1 2 3
| $ make get-monolite-latest $ make $ sudo make install
|
インストールの確認
Mono の確認
インストールできているかを確認します。
mono -V
で version 3.10
の表示があれば成功しています。
C# コンパイラの確認
次に、実際に C# のコードをコンパイルしてみます。
実行して Hello Mono!!
と表示されば成功です。
1 2 3 4 5 6 7
| class Test { public static void Main() { System.Console.WriteLine("Hello Mono!!"); } }
|
1 2 3
| $ mcs hello.cs $ mono hello.exe Hello Mono!!
|
libgdiplus の確認
最後に、メッセージボックスを表示させることで、 libgdiplus の確認を行います。
メッセージボックスが現れれば成功です。
1 2 3 4 5 6 7
| class Test { public static void Main() { System.Windows.Forms.MessageBox.Show("WinForms in Mono", "This is title"); } }
|
1 2
| $ mcs mb.cs -r:System.Windows.Forms $ mono mb.exe
|
サンプルプログラムの実行結果
例外が出る場合
System.TypeInitializationException
や System.DllNotFoundException
が出る場合は、 libgdiplus ライブラリへのリンクが正しくできていない状態です。以下の手順で修正することができます。
まずは find /usr -name libgdiplus.so
によって、 /usr/local/lib/libgdiplus.so
と出力されるのを確認します。(インストール先を変えた場合はそのフォルダ内のものが出力されるはず)
そして、 ldconfig -p | grep libgdiplus
でリンカが libgdiplus を認識しているかを確認します。例外が出ている場合、隣家に認識されていないため何も出力されないと思います。
その際、設定ファイルである /etc/ld.so.conf
を編集します。 vim や nano 等のエディタで開いて、 /usr/local/lib
の行を追加します。
それを終えたら sudo ldconfig
でリンカに設定を再読み込みさせ、再び ldconfig -p |grep libgdiplus
によりライブラリが認識されたかを確認します。
良さそうな出力があれば、 mono mb.exe
を実行するとメッセージボックスが現れるはずです。