Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

Cygwinにmonoをインストール

スポンサードリンク


今日もきれいなおねーさんです。結婚してください!!(*´ω`)
癒されますね。
話は変わり、mono使ってみたいなーと軽く調べてみると、
Macはもちろんのこと簡単にWindowsでもmonoが使えるようです。
ただ、Windowsでmonoってクロスプラットフォームなものを作る必要がないなら
いらね……Visual StudioでC#でいいじゃんなので
誰得?な感じはありますが、
コマンドラインで気軽に使えるっていうならいいかも!とおもい……(C#でもできるけど)
入れてみることにしました。
ただ、monoをコマンドプロンプトで使うのはいろいろ検閲により削除
なので、Cygwinで使ってみよーということで調べたらすぐに出てきました。
ちなみにですが、monoとは

MONOは99年、バンドをスタートした時は日本で認められずに、...

間違えました。

Mono(モノ)は、GNOMEプロジェクト創設者のミゲル・デ・イカザが開発した、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースのソフトウェア群、またそのプロジェクト名である。
現在はXamarin社が開発、販売、サポート業務を行っている。
共通言語基盤 (CLI) の実装やC#のコンパイラなどが含まれる。

Cygwin64bit版はいろいろ不備があるのであまり使っている人はいないと思いますが、
いちおう64bit版のやり方を書いておきます。
32bit版もほぼ同じ手順です。

Cygwin64bitのインストール

これは結構面倒です。
とりあえず落としましょう。
ここの説明は…割愛します。
https://www.cygwin.com/

64bit版の場合のmonoインストール

依存するモジュールのインストール

コマンドプロンプトを立ち上げます。
setup-x86_64.exeのあるディレクトリに移動します。
私の環境の場合はC:\CygwinLocalPackageなので

> cd C:\CygwinLocalPackage

Cygwinのインストールディレクトリ(rootになっているディレクトリ)を指定して次のコマンドを打ちます。
私の場合、C:\Cygwin64なので

> setup-x86_64.exe --root "C:\cygwin64" --quiet-mode --packages autoconf,automake,bison,gcc-core,gcc-g++,mingw-runtime,mingw-binutils,mingw-gcc-core,mingw-gcc-g++,mingw-pthreads,mingw-w32api,libtool,make,python,gettext-devel,gettext,intltool,libiconv,pkg-config,git,curl,libxslt

monoをダウンロード(今回はtar.bz2をダウンロードします)

Cygwinを立ち上げてサンプルコードを書きます。
wgetが入っていなければここからダウンロードしてください。
今回は現時点の最新版である4.4.2.30を使います。
Index of /sources/mono

$ wget http://download.mono-project.com/sources/mono/mono-4.2.2.30.tar.bz2

ところでみなさんこれなんて読みますか?僕はノリでウゲットですwww

解凍

最初の2行は変数を設定します。とりあえず公式の解説に合わせて、エンターを都度押してください。
解凍にものすごい時間がかかるのでカップ麺2杯くらいどうぞ(*´ω`)
気分だけ映画のハッカーですw

$ PREFIX=/usr/local
$ VERSION=4.4.2.30
$ tar xvf mono-$VERSION.tar.bz2

コンパイル

みなさん大好きconfigure & makeです。
configureの時間に気が遠くなります……。
カップ麺3杯くらいいけます。
そしてコンパイル・・・もう寝ていいですか(*´ω`)zZZ...

$ cd mono-4.2.2
$ ./configure --prefix=$PREFIX --host=i686-pc-mingw32
$ make
$ make install

--- 2 years later ---
ふぅ……これで環境構築は終わりです。

動作確認

ここでAtCoderの練習問題を解いてみます。

A - はじめてのあっとこーだー(Welcome to AtCoder)
高橋君はデータの加工が行いたいです。
整数 a,b,cと、文字列 s が与えられます。
整数 a+b+c と、文字列 s を並べて表示しなさい。

http://practice.contest.atcoder.jp/
using System;
using System.Linq;
using System.Collections.Generic;
namespace AtCoder
{
    class Program
    {
        public static void Main(string[] args)
        {
            var input = new List<int>();
            input.Add(int.Parse(Console.ReadLine()));
            input.AddRange(Console.ReadLine().Split(' ')
                .Select(int.Parse).ToList());
            string s = Console.ReadLine();
            Console.WriteLine(input.Sum() + " " + s);
        }
    }
}

コンパイル&実行&標準入力を与える…

$ mcs test.cs
$ mono test.exe
1
2 3
test

出力結果

6 test

めでたしめでたし(*´ω`)長かったー。
Cygwinだから異様に遅いんですね(;'∀')
決してPCは低スペックではないですが全部で3時間近くかかりました。
これだとプログラミングコンテストとかで気軽にC#を使えますね!
terminal+viでC#がかけて勉強ができます!
もちろん、特別なことをしない限りIntelliSenseの恩恵にあずかれませんが。

……ここまで書いておいてVM上のLinuxで普通にmono入れりゃあいいだけかも……
なんて少しだけ思いましたw