2008年2月23日土曜日

Mono 1.2.6 コマンド一覧

・コマンド一覧
[mono-core]
mono - Mono用ECMA-CLI ネイティブコード ジェネレータ (
JIT/実行時、AOT/実行前コンパイル)
/etc/mono/config , ~/.mono/config - Mono runtime file format configuration

mcs, gmcs, smcs - Mono C# コンパイラ (1.0, 2.0, Moonlight)

gacutil - Global Assembly Cache management utility.

chktrust - Check the trust of a PE executable.
certmgr - Mono Certificate Manager (CLI版)
setreg - Change settings for 公開鍵暗号
sn - デジタル 署名/認証/比較 strongnames on CLR assemblies.
mozroots - 信頼されるルート認証書をMozila用LXRからダウンロードしMono用認証書ストアにインポートする
[mono-devel]
al, al2 - Mono Assembly Linker
monolinker - Mono CIL Linker (manページがカラ?)
monodis - CIL image content dumper and disassembler.
monop, monop2 - Mono Class Outline Viewer
MakeCert - Create X.509 certificates for test purposes
...

[xsp]
XSP - Mono ASP.NET Webサーバ (xsp and xsp2)
(xsp,xsp2,mod-mono-server,mod-mono-server2,fast-cgi-server,fast-cgi-server2)

[mod_mono]
mod_mono -
ASP.NET用apacheモジュール。 Works together with mod-mono-server.exe

[mono-web]
disco
mconfig
soapsuds
wsdl
xsd

Mono(.NET)環境のインストール@CentOS4

mono環境はyumでインストールできる

■yumレポジトリにmonoを追加
# wget http://www.go-mono.com/download-stable/rhel-4-i386/mono.repo

# vi mono.repo
で確認する。
常時表示しない場合やオートアップデートから外す場合は、
enable=0
にする

# mv mono.repo /etc/yum.repos.d/

ちなみに提供されるRPMファイルは、PGP署名無しだった。

■yumインストール
・rpm一覧表
http://www.go-mono.com/download-stable/rhel-4-i386/

・ASP.NETをAppache上で動かしたいなら
# yum --enablerepo=mono mod_mono
を実行してインストール

■C#ソースのCILコンパイルと実行
$ vi hello.cs
http://www.go-mono.com/docs/monodoc.ashx?link=ecmaspec%3a8.1

namespace CSharp.Introduction
{
public class HelloMessage
{
public string Message {
get {
return "Hello, world";
}
}
}

class HelloApp
{
static void Main() {
HelloMessage m = new HelloMessage();
System.Console.WriteLine(m.Message);
}
}
}

$ gmcs Hello.cs
を、実行すると efi-app-ia32 形式の hello.exe が出来上がり、
$ mono hello.exe
で、実行できます。中身は、CILバイトコードです。
$ mono --aot hello.exe
を、実行すると elf32-i386 形式の hello.exe.so を作成した後に実行します。
中身はIA32のネイティブバイトコードですが、そのまま実行は出来ません。monoから実行するためのファイルです。

■コードページをインストールして、日本語を使う
デフォルトでは I18N.dll, I18N.West.dllのみで utf-8や iso-8859-1などしか使えません。
extrasを追加すると、 I18N.CJK.dll, I18N.MidEast.dll, I18N.Other.dll, I18N.Rare.dllが入りshift_jisやeuc-jpなどが使えるようになります。
# yum install --enablerepo=mono mono-locale-extras

その場で、編集するならvim-enhancedを入れましょう。
# yum install vim-enhanced
LANG=ja_JP.eucJP 環境ならEUC-JPのファイルに、
LANG=ja_JP.utf8 環境なら、UTF-8のファイルになります。

http://www.go-mono.com/docs/monodoc.ashx?link=ecmaspec%3a8.1

$ vi hello2.cs
namespace CSharp.Introduction
{
public class HelloMessage
{
public string Message {
get {
return "世界よ、こんにちは";
}
}
}

class HelloApp
{
static void Main() {
HelloMessage m = new HelloMessage();
System.Console.WriteLine(m.Message);
}
}
}

$ iconv -f utf-8 -t cp932 hello2.cs > sjis_hello2.cs
$ iconv -f utf-8 -t iso-2022-jp hello2.cs >jis_hello2.cs
$ iconv -f utf-8 -t euc-jp hello2.cs > eucjp_hello2.cs

・shift_jis(cp932)バイトコンパイル
$ gmcs -codepage:932 sjis_hello.cs
・utf-8(cp65001)バイトコンパイル
$ LANG=ja_JP.utf8 gmcs utf8_hello.cs
$ gmcs -codepage:65001 utf8_hello.cs
・EUC-JP(cp51932)バイトコンパイル
$ LANG=ja_JP.eucJP gmcs eucjp_hello.cs
$ gmcs -codepage:51932 eucjp_hello.cs
・iso-2022-jp(cp50221)バイトコンパイル
$ gmcs -codepage:50221 jis_hello.cs

・実行
バイトコンパイル後の内部コードは、utf-16やutf-8になりますが、
実行時は、LANG環境に合わせた文字コードで出力されます。
$ LANG=ja_JP.ujis mono hello.exe
$ LANG=ja_JP.utf8 mono hello.exe

ですので、
$ LANG=C mono hello.exe
では、日本語が出力出来なくなるので、最低限 LANG=en_US.utf8 を使いましょう。

■mcs, gmcs, smcs - Mono C# Compiler (1.0, 2.0, Moonlight) の機能
mcs - .NET 1.xプロファイル、C# 1.0と2.0の機能(ジェネリクスとNullable型をのぞく)
gmcs - .NET 2.0プロファイル、C# 2.0の機能すべて
smcs - (Webブラウザ上で動く)Silverlight/Moonlightプロファイル、 デフォルトで-langversion:linqオプションがつくのでC# 3.0のLINQが利用できます。


# rpm -qf /usr/bin/mcs
# rpm -qf `which mcs`
mono-core-1.2.6-4.novell
# rpm -ql mono-core

■Monoダウンロードページ
RPMについては、Download Monoのページで確認できます。
Windows用などもここからダウンロードできます。

http://www.go-mono.com/mono-downloads/download.html

■コードページ一覧(抜粋)
Monoでは、I18N.*.dllを追加しなければネイティブであっても使えません。

・.net ネイティブ
コード ページ 名前 表示名
1200 utf-16 Unicode
1201 unicodeFFFE Unicode (ビッグ エンディアン)
12000 utf-32 Unicode (UTF-32)
12001 utf-32BE Unicode (UTF-32 ビッグ エンディアン)
65000 utf-7 Unicode (UTF-7)
65001 utf-8 Unicode (UTF-8)

20127 us-ascii US-ASCII

1252 Windows -1252 西ヨーロッパ言語 (Windows)
28591 iso-8859-1 西ヨーロッパ言語 (ISO)

50220 iso-2022-jp 日本語 (JIS)
50221 csISO2022JP 日本語 (JIS 1 バイト カタカナ可)
50222 iso-2022-jp 日本語 (JIS 1 バイト カタカナ可 - SO/SI)
51932 euc-jp 日本語 (EUC)

936 gb2312 簡体字中国語 (GB2312)
10008 x-mac-chinesesimp 簡体字中国語 (Mac)
20936 x-cp20936 簡体字中国語 (GB2312-80)
50227 x-cp50227 簡体字中国語 (ISO-2022)
51936 EUC-CN 簡体字中国語 (EUC)
52936 hz-gb-2312 簡体字中国語 (HZ)
54936 GB18030 簡体字中国語 (GB18030)

10003 x-mac-korean 韓国語 (Mac)
20949 x-cp20949 韓国語 Wansung
50225 iso-2022-kr 韓国語 (ISO)
51949 euc-kr 韓国語 (EUC)

28598 iso-8859-8 ヘブライ語 (ISO-Visual)
38598 iso-8859-8-i ヘブライ語 (ISO-Logical)

57002 x-iscii-de ISCII デバナガリ文字
57003 x-iscii-be ISCII ベンガル語
57004 x-iscii-ta ISCII タミール語
57005 x-iscii-te ISCII テルグ語
57006 x-iscii-as ISCII アッサム語
57007 x-iscii-or ISCII オリヤー語
57008 x-iscii-ka ISCII カナラ語
57009 x-iscii-ma ISCII マラヤラム語
57010 x-iscii-gu ISCII グジャラート語
57011 x-iscii-pa ISCII パンジャブ語

・残りの日本語関係
コード ページ 名前 表示名
932 shift_jis 日本語 (シフト JIS)
10001 x-mac-japanese 日本語 (Mac)
20932 EUC-JP 日本語 (JIS 0208-1990 および 0212-1990)

・参考
.NET Framework SDK 2.0 > クラスライブラリ > 名前空間 System.Text > Encoding クラス
http://msdn2.microsoft.com/ja-jp/library/system.text.encoding(VS.80).asp

タグの利用

タグでクラス分けできるようになったので、出戻り。