= Cresc. =

>>The memory over IP
>>|

CentOS 5.5+mono 2.8+xsp 2.8+mod_mono 2.8インストールその2

2010-10-26 23:28:18 | Filesystem.log2

今回はmono2.8のインストールとC#4.0の動作確認です。

さて、下記のようになっている状態からのスタートです。
[root@testmono ~]#
とにかくmono2.8本体を入手する必要があるので、
http://ftp.novell.com/pub/mono/sources-stable/
ここから入手しましょう。
mono2.4の時も使いましたが今回もyumが大活躍です。
ホームページからコマンドベースでデータをダウンロードするにはwgetコマンドを使用します。
[root@testmono ~]#wget
とか打ち込んでも
-bash: wget: command not found
とか表示されます。意味はそのまま「そんなコマンドないですよ。」
無ければインストールということで
[root@testmono ~]#yum -y install wget
とか入れてみましょう。
Complete!
が表示されたら
[root@testmono ~]#wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.8.tar.bz2
と入力するとmono2.8のダウンロードが開始されます。
ダウンロードが終了したらデータの解凍をするのですが、
解凍ソフトがOS最小構成なのでインストールされていません。
[root@testmono ~]#yum -y install bzip2
と入力して解凍プログラムをインストールしましょう。
インストールが終わったら
[root@testmono ~]# tar -xjvf mono-2.8.tar.bz2
と入力してダウンロードしたデータを解凍しましょう。
画面がずばーっと表示されます。

それが終わったら解凍したデータのいるディレクトリに移動します。
[root@testmono ~]# cd mono-2.8

さて、ここからがmonoのインストール作業なわけです。
うまくいけばコマンド自体はconfigureとmakeとmake installで終わるのですが、
最小構成のためいろいろ足りなくてエラーが出てきます。
やっぱり今回もエラーを拾いながらいきましょう。

では
[root@testmono ~]# ./configure
と打ち込んでみましょう。
画面が少し流れて止まります。
画面を見ると
checking for gcc... no
checking for gcc... gcc
checking for C compiler default output file name...
configure: error: in `/root/mono-2.8':
configure: error: C compiler cannot create executables
See `config.log' for more details.
と出てきてます。
エラーを読むと、「実行ファイルができなかったよ」的な内容です。
上の方を見るとgcc...noとなっているのでgccが足りないようです。
じゃ。ということで、
[root@testmono ~]# yum -y install gcc
としてみましょう。
インストールが終わったら再度
[root@testmono ~]# ./configure
さっきより進んだ!っと思いきややはりエラーで止まります。
今度のエラーは親切で
configure: error: You need to install g++
となっています。
そこで
[root@testmono ~]# yum -y install g++
とかやってみるのですが、
No Matches found
とか言われてしまいます。
実はこれは親切と見せかけた不親切で
[root@testmono ~]# yum -y install gcc-c++
としないといけません。
インストールが終了して、
[root@testmono ~]# ./configure
とすると、今度のエラーは
configure: error: You need to install bison
「bisonインストールしてね」となってます。
実はこれは親切と見せかけて本当に親切。。。というかまともなエラーです。
[root@testmono ~]# yum -y install bison
でOKです。
インストールが終わったら懲りずに
[root@testmono ~]# ./configure
を入力します。
configure: error: msgfmt not found. You need to install the 'gettext' package, or pass --enable-nls=no to configure.
ひたすらエラーが出てきます。
ここではどうやらgettextパッケージをインストールしてくれということなので、
[root@testmono ~]# yum -y install gettext
とするとうまく入ってくれます。
だいぶエラーが出なくなってきたのでそろそろいくかな?
[root@testmono ~]# ./configure
を入力!
今度は長く続いているぞ…
ということでエラーが出ずに終わりました。

        mcs source:    mcs
        olive source:
   Engine:
        GC:            sgen and bundled Boehm GC with typed GC and parallel mark
        GLIB:          embedded
        TLS:           __thread
        SIGALTSTACK:   yes
        Engine:        Building and using the JIT
        oprofile:      no
        BigArrays:     no
        DTrace:        no
        Parallel Mark: yes
        LLVM Back End: no (dynamically loaded: no)

    Libraries:
        Moon Profile:  no
        MonoTouch:     no
        JNI support:   IKVM Native
        libgdiplus:    assumed to be installed
        zlib:

こんな感じで終わってます。
noがついているところは入れた方が良いのかなーとか思いながら次に進みましょう。
configureの次はmakeなのですが、
[root@testmono mono-2.8]# make
と入力すると
-bash: make: command not found
となって、やっぱり「コマンドガナイヨー」といわれます。
お決まりの
[root@testmono mono-2.8]# yum -y install make
とするとmakeコマンドがインストールされます。
さて、
[root@testmono mono-2.8]# make
画面がひたすら流れます。
画面の流れが止まったらいよいよインストールです。
[root@testmono mono-2.8]# make install
と入力してあげるとさらに画面が流れます。
時間がかかるので
[root@testmono mono-2.8]# make;make install
としてもいいです。
続けてコマンドを実行してくれます。
さて、画面が止まったらmono2.8のインストールは終了です。
試しにプログラムを作ってみましょう。
最小構成なのでviでプログラムを書きます。
[root@localhost mono-2.8]#vi test1.cs
と入力します。
aボタンを押して編集モードに入ります。
次のように入力します。
using System;
class TheWorld
{
static void Main(string[] args)
{
Console.WriteLine("Stop The World WRY");
}
}

入力が終わったらESCボタンを押してShift+Zを二回押して保存作業を行います。
[root@localhost mono-2.8]#mcs test1.cs
と入力してコンパイルします。
[root@localhost mono-2.8]#
と表示されたら終了してます。
実行するにはmonoを最初につけて
[root@localhost mono-2.8]#mono test1.exe
とします。
Stop The World WRY
と表示されれば成功です。(ちなみに上記サンプルは過去記事からのコピペ)
せっかくC#4.0対応した!って言っているので動作確認してみたいのが人の性でございます。
やってみましょう。ええ。やってみましょう。

http://www.atmarkit.co.jp/fdotnet/csharp4/csharp4_03/csharp4_03_02.html
を参考にソースコードを作成します。
[root@localhost mono-2.8]#vi test2.cs
として、編集モードに入った後に
using System;
using System.Threading.Tasks;
class TheWorldEnd
{
static void Main(string[] args)
{
var task1=Task.Factory.StartNew(()=>
{
for(int i=0;i<10;i++)Console.Write("WRY");
});
var task2=Task.Factory.StartNew(()=>
{
for(int i=0;i<10;i++)Console.Write("END");
});
Task.WaitAll(task1,task2);
Console.WriteLine("World End");
}
}
と入力して保存しましょう。
ドキドキしながら
[root@localhost mono-2.8]#mcs test2.cs

と入力すると
test2.cs(2,24): error CS0234: The type or namespace name `Tasks' does not exist in the namespace `System.Threading'. Are you missing an assembly reference?
Compilation failed: 1 error(s), 0 warnings

というメッセージが出てきてエラーで終了します。
エラーメッセージを読んでみると・・・・
System.ThreadingにTasksなんてのいないよ!!って言われてます。
まー、C#4.0ですから、今までの方法が通用しない可能性の方が高いわけで、
そうなると、考えられるのは何かオプションがつくのか?mcs自体が違うのか?
といったくらいしか思いつきません。
正解は後者で、C#4.0を使う場合はdmcsという別のコマンドになってしまいます。
[root@localhost mono-2.8]#dmcs test2.cs
と入力すると、今度はエラーは出ないことがわかります。
[root@localhost mono-2.8]#mono test2.exe
と入力すると実行です。
WRYWRYWRYWRYWRYWRYWRYWRYWRYWRYENDENDENDENDENDENDENDENDENDENDWorld End
と表示されたら動作確認OKです。

ちなみに、mcsコマンドは.Netの1.1で将来的に無くなるみたいです。
gmcsが2.0
smcsが2.1
dmcsが4.0
とのことですよー

さて、次回はlibgdiplus2.8です!


最新の画像もっと見る