개요
지금까지 .NET 기반 애플리케이션은 Windows 운영체제 전용이라고 여겨져 왔습니다. 하지만 마이크로소프트가 Mono라는 새로운 크로스 플랫폼 솔루션을 선보이면서 상황이 달라졌습니다. Mono를 사용하면 .NET 플랫폼에서 개발된 애플리케이션을 Linux 환경에서도 실행할 수 있으며, 마치 .exe 파일을 구동하는 것이 아니라 리눅스 패키지를 실행하는 듯한 자연스러운 사용 경험을 제공합니다.
Mono란 무엇인가?
Mono는 개발자가 Mac이나 Linux와 같은 다른 플랫폼에서 .NET 기반 애플리케이션을 실행할 수 있도록 지원하는 오픈 소스 유틸리티입니다. Windows용 설치 패키지도 함께 제공되기 때문에 Visual Studio IDE나 .NET Framework SDK를 별도로 설치하지 않고도 Windows OS에서 .NET 어셈블리를 컴파일하고 실행할 수 있습니다.
또한 Mono에서 기존 핵심 CLR 네임스페이스를 활용하면 Windows Forms, LINQ, XML 웹 서비스, ADO.NET, ASP.NET 등을 사용하는 실시간 프로덕션 수준의 어셈블리까지 빌드할 수 있습니다.
먼저 wget 유틸리티를 사용해 Mono 바이너리를 다운로드한 뒤, 아래 명령어 시리즈를 순서대로 실행하여 올바르게 구성합니다:
wget --no-check-certificate https://raw.github.com/nathanb/iws-snippets/master/mono-install-scripts/ubuntu/install_mono-3.0.sh
chmod 755 install_mono-3.0.sh
./install_mono-3.0.sh
추가로 .NET 바이너리를 컴파일할 수 있도록 MCS 패키지를 함께 설치해 줍니다:
root/kali:~/ sudo apt-get install mcs
C# 코드 컴파일하기
Mono 콘솔 애플리케이션의 구조는 기존 C#.NET 콘솔 애플리케이션과 거의 동일합니다. 첫 번째 Mono 기반 콘솔 애플리케이션(test.cs)을 만들려면 VIM과 같은 코드 편집기를 열고 다음 코드를 입력합니다.
using System;
namespace test {
class test{
public static void Main(string[] args) {
System.Console.WriteLine("C# app Compiled on Kali Linux");
}
}
}
코드 작성이 끝나면 터미널을 열고 아래 명령어를 입력하여 코드를 컴파일합니다.
root/kali:~/ mcs test.cs
root/kali:~/ ls
test.cs test.exe
위 명령을 실행하면 Windows에서처럼 실행 가능한 파일이 생성됩니다. 이제 ./test.exe 또는 mono test.exe 명령을 입력하여 C# 바이너리를 실행할 수 있습니다. 아래 스크린샷은 지금까지 진행한 모든 과정을 한눈에 보여줍니다.
