Linux で C# を実行する

2010/12/21
★★★

Linux で C# アプリケーションを実行させることができるオープンソースの .NET Framework である "Mono" をインストールする方法を紹介する。

ここでは、CentOS 5.5 x64 を例にとり、説明を進める。

[http://mono-project.com/] へアクセス、[download] を選択する。

[1. Select Platform] より、[RHEL/CentOS] (任意) を選択する。

表示されたダウンロードサイトへ移動し、以下のファイルをダウンロードする。

  • mono-addon-libgdiplus0-2.6.7-6.1.x86_64.rpm
  • mono-addon-core-2.6.7-6.1.x86_64.rpm

[root@centkun ~]# mdir /tmp/mono/
[root@centkun ~]# cd /tmp/mono/
[root@centkun mono]# wget http://ftp.novell.com/pub/mono/download-stable/RHEL_5/x86_64/mono-addon-libgdiplus0-2.6.7-6.1.x86_64.rpm
[root@centkun mono]# wget http://ftp.novell.com/pub/mono/download-stable/RHEL_5/x86_64/mono-addon-core-2.6.7-6.1.x86_64.rpm

ダウンロードした rmp の依存関係を確認する。

"mono-addon-libgdiplus" の依存関係は、以下の通り。
[root@intrepid mono]# rpm -qpR /tmp/mono/mono-addon-libgdiplus0-2.6.7-6.1.x86_64.rpm
/sbin/ldconfig
/sbin/ldconfig libX11.so.6()(64bit)
libXrender.so.1()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libexif.so.12()(64bit)
libfontconfig.so.1()(64bit)
libfreetype.so.6()(64bit)
libgdiplus.so.0()(64bit)
libglib-2.0.so.0()(64bit)
libjpeg.so.62()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libpng12.so.0()(64bit)
libpng12.so.0(PNG12_0)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit) libtiff.so.3()(64bit)
libungif.so.4()(64bit)
libz.so.1()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH)

"mono-addon-core" の依存関係は、以下の通り。
[root@centkun mono]# rpm -qpR mono-addon-core-2.6.7-6.1.x86_64.rpm
mono-addon-libgdiplus0 >= 2.6
/bin/sh
/sbin/ldconfig
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(VersionedDependencies) <= 3.0.3-1
/bin/bash
/bin/sh
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libgcc_s.so.1()(64bit)
libglib-2.0.so.0()(64bit)
libgmodule-2.0.so.0()(64bit)
libgthread-2.0.so.0()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
libpthread.so.0(GLIBC_2.3.3)(64bit)
librt.so.1()(64bit)
librt.so.1(GLIBC_2.2.5)(64bit)
libstdc++.so.6()(64bit)
libz.so.1()(64bit)
mono-addon(System) = 2.0.0.0

当方の環境では、以下のライブラリが不足していたので、yum で以下のライブラリをインストールした。

  • libexif.x86_64
  • giflib.x86_64

[root@centkun mono]# yum install -y libexif.x86_64
[root@centkun mono]# yum install -y giflib.x86_64

ダウンロードした、rpm をインストールする。
[root@centkun mono]# rpm -ivh mono-addon-libgdiplus0-2.6.7-6.1.x86_64.rpmx86_64.rpm
[root@centkun mono]# rpm -ivh mono-addon-core-2.6.7-6.1.x86_64.rpm

/opt/novell/mono/bin/ 以下に、コンパイラ等のバイナリがインストールされる。

/opt/novell/mono/bin/ をパスに追加する。
[root@centkun ~]# vi /etc/profile
#最終行に以下のラインを追加する。
export PATH=$PATH:/opt/novell/mono/bin/

変更を反映させる。
[root@centkun ~]# soruce /etc/profile

パスが通っていることを確認する。 
[root@centkun ~]# which gmcs
/opt/novell/mono/bin/gmcs

インストールは以上。

次に、サンプルアプリケーションを作成して動作確認をする。

[root@centkun ~]# mkdir mono-sample
[root@centkun ~]# cd mono-sample
[root@centkun mono-sample]# vi sample001.cs

using System;

public class HelloWorld
{
    static public void Main ()
    {
        Console.WriteLine ("Hello, Mono World!!");
    }
}

コンパイルを行う。
[root@centkun mono-sample]# gmcs sample001.cs

実行する。
[root@centkun mono-sample]# gmcs sample001
Hello, Mono World!!

上記のようにソースコード通りの文字列が表示されれば正しく動作している。

次回は、Linux で、ASP.NET を動作させる方法を紹介する予定だ。