Mono 3.10をCentOS 6にインストール

Mono 3.10 のビルド・インストール – 総武ソフトウェア推進所を参考にして、CentOS 6にMono 3.10をインストールしたので、その過程を残しておきたいと思います。

今回はMonoがもともと入っていない環境で、インストール先フォルダのオプションは使用していません。

libgdiplus(3.8)のインストール

libgdiplusは、Windows Formsなどを動かすのに必要となるライブラリです。
必須ではないのですが、C#を使うならばインストールしておくといいと思います。

依存パッケージのインストール

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

ソースコードの取得とコンパイル準備

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

コンパイルとインストール

make
sudo make install

Mono本体(3.10)のインストール

Monoのコンパイルには時間がかかりました。コンソールを見て待つのではなく、別の作業をするのをオススメします。

依存パッケージのインストール

sudo yum install bison

ソースコードの取得とコンパイル準備

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

コンパイルとインストール

make get-monolite-latest
make
sudo make install

インストールの確認

Monoの確認

インストールできているかを確認します。
mono -Vでversion 3.10の表示があれば成功しています。

C#コンパイラの確認

次に、実際にC#のコードをコンパイルしてみます。
実行してHello Mono!!と表示されば成功です。

class Test
{
	public static void Main()
	{
		System.Console.WriteLine("Hello Mono!!");
	}
}
mcs hello.cs
mono hello.exe

libgdiplusの確認

最後に、メッセージボックスを表示させることで、libgdiplusの確認を行います。
メッセージボックスが現れれば成功です。

class Test
{
	public static void Main()
	{
		System.Windows.Forms.MessageBox.Show("WinForms in Mono", "This is title");
	}
}
$ 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を実行するとメッセージボックスが現れるはずです。

参考記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です