Dienstag, 9. Juni 2015

C# unter Linux - Installation und erste Schritte

Die nächsten Posts möchte ich dem Betriebssystem Linux widmen und zeigen, wie man dort C# Programme entwickeln und ausführen kann.
Dieses ist mit dem Mono-Projekt möglich, welches leicht und ohne große Vorkenntnisse eingerichtet werden kann.
Mono ist eine .Net Entwicklungs- und Laufzeitumgebung für verschiedene Plattformen, darunter Linux und Android. Momentan wird die Entwicklung durch die Firma Xamarin vorangetrieben, in meiner Postreihe über App Entwicklung mit C# für Android habe ich schon über das Xamarin Studio berichtet, welches natürlich auf dem Mono Kernel basiert.
Ein großer Vorteil von Mono ist, dass unter Windows kompilierte .Net Programme ohne Neukompilierung direkt auf Linux ausgeführt werden können (und natürlich umgekehrt), die Ausführung ist also wirklich Plattform unabhängig.

Kommen wir zur Installation, welche ich für die Linux Distribution Ubuntu beschreiben werden. Unterschiede in den Distributionen gibt es lediglich bei der Installation, danach ist die Bedienung von Mono etc. gleich. Grundkenntnisse im Bereich der Linux Benutzung werden vorausgesetzt.
Grundlegende Mono Komponenten, wie die Laufzeitumgebung und den Compiler, instalieren wir mit folgender Eingabe im Terminal:

sudo apt-get install mono-complete

Falls diese Operation durchläuft: Herzlichen Glückwunsch, euer Linux kann nun .Net, speziell C#!

Bevor ich im nächsten Post die Benutzung einer komfortablen Entwicklungsumgebung vorstelle, testen wir hier zuerst ein paar grundlegende Funktionen.
Ein nettes Feature ist das Programm csharp. Gibt man diesen Befehl in der Konsole ein, startet eine interaktive C# Shell, in welcher man C# Befehle eingeben kann, was so aussieht:
















Wir verlassen die Shell mit dem Befehl quit.

Nun möchte ich die Verwendung des Mono Compilers zeigen und dessen Aufruf über die Kommandozeile, ähnlich der Verwendung des C++ Compilers gcc.
Dafür schreiben wir ein C# Programm in eine .cs Datei und kompilieren dieses zu einer .exe Datei - fertig (dabei sieht man sehr schön, wie kompakt man ein C# Programm halten kann und was es eigentlich ausmacht - im Gegensatz zu der Programmierung mit Visual Studio o.ä., wobei sehr viele Dateien angelegt werden).
Wir legen also zuerst die Datei HelloWorld.cs an. Dies können wir zum Beispiel über die Konsole machen. Wir navigieren dazu mittels cd in das entsprechende Verzeichnis und geben den Befehl vim HelloWorld.cs ein. vim ist ein Texteditor, den ich am liebsten verwende, wir weisen den Computer mit der Eingabe an, die Datei HelloWorld.cs mit vim zu öffnen - und da sie noch nicht existiert, wird sie erzeugt (wenn die Datei das erste Mal gespeichert wird).
Im sich öffnenden vim Fenster geben wir den folgenden Code ein (vim kann bei der ersten Verwendung etwas trickreich sein, hier findet sich ein gutes Tutorial - und nochmal als Anmerkung, natürlich kann jeder andere beliebige Editor verwendet werden):

using System;

public class HelloWorld
{
        static public void Main()
        {
                Console.WriteLine("Hello from the compiler!");
        }
}

Wir verlassen und speichern die Datei mittels Esc - :x.
Dann rufen wir den Compiler mcs auf:

mcs HelloWorld.cs

Dieser kompiliert die Datei und erstellt, falls der Prozess fehlerfrei durchläuft, die Datei HelloWorld.exe im selben Verzeichnis.
Diese können wir mittels mono HelloWorld.exe aufrufen oder ganz einfach mit:

./HelloWorld.exe

Und schon ist unser erstes C# Programm unter Linux erstellt und der Compiler begrüßt uns.

Davon gibt es hier ein Video zu sehen.

Kommentare:

  1. Hallo Oliver,

    funktioniert das Einbinden von Windows-spezifischen .DLLs unter Linux? Wie z.B. User32.DLL?

    Viele Grüße,
    Ein anderer Oli

    AntwortenLöschen
    Antworten
    1. Hallo Oli,

      das ist so nicht möglich, da die User32.dll eben eine Windows spezifische Bibliothek ist, welche Windows spezifische Kernel Funktionen aufruft, die es unter Linux gar nicht gibt.
      (Jedoch können, nur als genereller Hinweis, mit .Net geschriebene und kompilierte Bibliotheken auch unter Linux benutzt werden, da Mono ja plattformunabhängig ist.)
      Was genau möchtest du denn machen? Für vieles gibt es auch Linux Bibliotheken.

      Viele Grüße
      Olli

      Löschen
  2. Ergänzungshalber ist vielleicht zu erwähnen, dass Mono wunderbar auf einem Raspberry Pi mit Raspian läuft. Man kann deine Beispiele dort wunderbar testen.

    AntwortenLöschen