티스토리 뷰



마이크로소프트사의 닷넷 프레임워크가 발전을 거듭하면서 자바(Java)진영 처럼 어느덧 크로스플랫폼(Cross platform)이라는 말에 어울리는 수준에 도달하고 있지 않나하는 생각입니다. 자바 기반의 이클립스를 리눅스에서도 윈도우에서도 동일한 사용 경험으로 사용할 수 있듯시 닷넷 기반의 응용을 윈도우 뿐만아니라 리눅스에서도 사용할 수 있다는 말입니다. 이것을 가능해주는 프로젝트가 바로 모노 프로젝트(http://www.mono-project.com/) 입니다. 이번 포스팅은 리눅스(우분투)에서 모노(mono)를 설치해서 닷넷 응용의 크로스 플랫폼 가능성을 살펴보고자 합니다.


sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

먼저 위의 스크립트와 그림처럼 모노 프로젝트의 GPG 사인키를 시스템에 추가합니다.


echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list

위의 명령은 /etc/apt/sources.list.d/mono-xamarin.list라는 파일을 만들고 그 파일에 "deb http://download.mono-project.com/repo/debian wheezy main"를 입력하는 과정으로 이후 진행할 업데이트 작업을 위한 준비입니다.

sudo apt-get update

위의 apt-get update까지 수행했으면 본격적인 모노 패키지 설치를 진행할 수 있습니다.

sudo apt-get install mono-devel mono-complete

위의 그림에서도 확인할 수 있듯이 mono-devel mono-complete 패키지 설치에 182MB정도를 다운로드 및 설치해야 하므로 감안해서 작업을 진행합니다. ASP.NET등 기타 응용 프로그램을 위해서 referenceassemblies-pcl, ca-certificates-mono, mono-xsp4 등의 패키지도 설치해야 될 필요성이 있을 수 있습니다. 

using System;
using System.Windows.Forms;

public class HelloWorld : Form
{
    static public void Main ()
    {
        Application.Run (new HelloWorld ());
    }

    public HelloWorld ()
    {
        Text = "Hello World";
    }
}

모노가 정상적으로 설치되었는지 확인하기 위하여 C# 샘플 프로그램을 작성해서 빌드 및 실행이 정상적으로 되는지 확인합니다. 

위의 윈도우폼 응용을 편집기로 작성하여(필자는 vi 에디터로 작성) mcs(Mono C# compiler) 도구로 빌드합니다. 빌드과정에서 "-pkg:dotnet"을 옵션으로 제공합니다. 빌드가 성공했으면 "mono 프로그램명"의 형식으로 실행시키면 됩니다.

이제는 윈도우에서 빌드한 프로그램을 그대로 리눅스에 옮겨서 말그대로 "크로스 플랫폼"의 유익이 있는지 확인해 봅니다. 위의 그림은 윈도우에서 윈도우폼 응용으로 샘플 프로그램을 빌드한 다음 실행시킨 화면입니다.


빌드이후에 윈도우 시스템에 생성한 파일들을 리눅스 시스템으로 전송한 다음 "mono 프로그램명"으로 실행시키면 위의 그림과 같이 동일한 결과를 확인할 수 있습니다. 윈도우에서 개발한 프로그램을 별다른 수정없이 리눅스에서도 그대로 실행할 수 있음을 확인했습니다.

끝으로 윈도우폼등에서 한글이 정상적으로 표시되도록 하려면 시스템을 한국어 기반으로 동작하도록 전환해야 합니다. 위의 화면은 locale 명령으로 시스템의 언어와 인코딩을 확이한 것입니다.



댓글
댓글쓰기 폼