*Mono [#c287603e]
[[Mono>+http://www.mono-project.com/Main_Page]]
Linuxでも動く.NET Framework実行/開発環境
コマンドは、mcs,gmcs,dmcsを使って、.csファイルをコンパイルする。
*dmcs [#sfb9b4cb]
Linuxでの.NET実行環境である[[Mono>Linux/Source/Mono]]のコマンド。
.NETのソースコード(.csファイル)をコンパイルし実行ファイルを生成する。
~
*インストール [#c333df39]
&size(16){&font(b){1. 事前準備};};
monoをビルドする前に、以下のライブラリを入れておく。
[[Libgdiplus>Linux/Source/Libgdiplus]]
他にもあるだろうが省略。
詳しくは、オフィシャルサイトのマニュアルを見る
*実行コマンド [#ud1ddf89]
&size(16){&font(b){1. $ mono hoge.exe};};
.NET実行ファイルをLinux上にて実行する。
Windowsで生成した実行ファイルを、Linux上で実行する事も可能。
※ただし、WindowsのkernelDLLを使用していないプログラムのみ。
~
&size(16){&font(b){2. ビルド・インストール};};
 # tar jxvf mono-3.0.3.tar.bz2
 # cd mono-3.0.3
 # ./configure --prefix=/usr/local/mono --with-libgdiplus=/usr/local/libgdiplus/lib/libgdiplus.la 
 # make
 # make install
&size(16){&font(b){2. $ mcs hoge.cs};};
.NET(C# 1.1)のコンパイルコマンドはこれを使う。
~
*設定 [#v5ab43ac]
&size(16){&font(b){I. pkgconfigの修正};};
稀に、pkgconfigの値がおかしくなる。
ので、“mono*.pc”の各ファイルを修正していく
 
&font(b){mono-2.pc};
 #prefix=${pcfiledir}/../..
 #exec_prefix=${pcfiledir}/../..
 prefix=/usr/local/mono
 exec_prefix=${prefix}/bin
 libdir=${prefix}/lib
 includedir=${prefix}/include/mono-2.0
 sysconfdir=${prefix}/etc
 
&font(b){mono-cairo.pc};
 #prefix=${pcfiledir}/../..
 #exec_prefix=${pcfiledir}/../..
 prefix=/usr/local/mono
 exec_prefix=${prefix}/bin
 libdir=${prefix}/lib
 includedir=${prefix}/include
 
&font(b){mono-lineeditor.pc};
 #prefix=${pcfiledir}/../..
 prefix=/usr/local/mono
 assemblies_dir=${prefix}/lib/mono-source-libs
 Sources=${assemblies_dir}/getline.cs
 
&font(b){mono-nunit.pc};
 #prefix=${pcfiledir}/../..
 #exec_prefix=${prefix}
 #libdir=${exec_prefix}/lib
 prefix=/usr/local/mono
 exec_prefix=${prefix}/bin
 libdir=${prefix}/lib
 
&font(b){mono-options.pc};
 #prefix=${pcfiledir}/../..
 prefix=/usr/local/mono
 assemblies_dir=${prefix}/lib/mono-source-libs
 Sources=${assemblies_dir}/Options.cs
 
&font(b){mono.pc};
 #prefix=${pcfiledir}/../..
 #exec_prefix=${pcfiledir}/../..
 prefix=/usr/local/mono
 exec_prefix=${prefix}/bin
 libdir=${prefix}/lib
 includedir=${prefix}/include/mono-2.0
 sysconfdir=${prefix}/etc
 
&font(b){monodoc.pc};
 prefix=/usr/local/mono
 #exec_prefix=${prefix}
 exec_prefix=${prefix}/bin
 libdir=/usr/local/mono/lib
 sourcesdir=${libdir}/monodoc/sources
 
&font(b){monosgen-2.pc};
 #prefix=${pcfiledir}/../..
 #exec_prefix=${pcfiledir}/../..
 prefix=/usr/local/mono
 exec_prefix=${prefix}/bin
 libdir=${prefix}/lib
 includedir=${prefix}/include/mono-2.0
 sysconfdir=${prefix}/etc
&size(16){&font(b){3. $ gmcs hoge.cs};};
.NET(C# 2.0)のコンパイルコマンドはこれを使う。
mcsコマンドに2.0用のオプションを付けたものと同じ動作。
~
&size(16){&font(b){4. $ dmcs hoge.cs};};
.NET(C# 4.0)のコンパイルコマンドはこれを使う。
&font(b){dmcsコマンドは下位互換があるので、とりあえずこれを使っておけば1.1~4.5までコンパイル可能};
mcsコマンドに4.0用のオプションを付けたものと、“ほぼ”同じ動作。
~
*オプション [#n985b935]
&size(16){&font(b){I. -target:};};
コンパイル方法を指定する。クラスライブラリから動的ライブラリ(.dll)を生成する際とかに使用する。
 DLL生成例
 $ dmcs -target:library bar.cs
 
 上のコマンドを略して書くと
 $ dmcs -t:library bar.cs
~
&size(16){&font(b){II. -reference:};};
コンパイル時に使用する動的ライブラリを指定する。
 使用例
 $ dmcs -reference:bar.dll hoge.cs
 
 上のコマンドを略して書くと
 $ dmcs -r:bar.dll hoge.cs
~
&size(16){&font(b){III. -out:};};
生成するファイル(.exeや.dll)のファイル名を指定する。
 使い方
 $ dmcs -out:main.exe hoge.cs
 $ ls
 hoge.cs main.exe
 
 複合して使うとこんな感じ
 $ dmcs -out:main.exe -r:bar.dll hoge.cs