11 Stimmen

Kompiliert mono C# und native?

Ich bin neu bei Mono und habe erst kürzlich damit angefangen. Ist Mono-Programm von C# zu nativem Code kompiliert werden, um in der Lage sein, auf mehreren OS laufen?

und auch, ich sah einen Screencast auf MonoTouch, die mir sagt, dass die Monotouch (vor allem) kompilieren alles nach unten zu Native für C# in der Lage sein, auf Iphone laufen.

Ich bin ziemlich verwirrt.

22voto

Jimmy Punkte 85199

Mono kompiliert standardmäßig zu einem Zwischen-Bytecode, der dann auf einer virtuellen Maschine ausgeführt wird. Dieser Bytecode ist portabel, aber kein nativer Maschinencode.

Mono hat einen AOT-Compiler die native Bilder erzeugt, wenn Bytecode nicht in Frage kommt.

7voto

Ben Voigt Punkte 268424

So gut wie alle .NET-Plattformen, sowohl von Microsoft (einschließlich Desktop, Compact Framework und Microframework) als auch von Drittanbietern (z. B. mono), kompilieren alles zuerst in eine gemeinsame Zwischensprache, die portabel ist, und kompilieren dann während der Ausführung just-in-time in nativen Code. Einige haben kein JIT und interpretieren die IL einfach direkt.

Native Codes sind natürlich nicht portierbar.

Ist das hilfreich?

7voto

Thijs Punkte 71

Probieren Sie 'mkbundle' aus, um die Mono-Laufzeitumgebung in Ihre ausführbare Datei zu kompilieren. z.B. mkbundle --static --deps Hallo.exe -o hallo

5voto

zneak Punkte 129366

Mono selbst kompiliert zum .NET CLR Bytecode, so dass es auf jeder .NET- oder Mono-aktivierten Plattform ausgeführt werden kann. Diese ausführbaren Dateien bestehen nicht aus nativen Maschinenbefehlen; sie werden von der Laufzeitumgebung auf dem ausführenden System just-in-time in nativen Code kompiliert. Kurz gesagt, Mono-Binärdateien sind portabel.

Die Kompilierung von CocoaTouch in nativen Code war notwendig, da Apple Systeme wie Mono auf dem iPhone nicht zulässt. Dies ist ein Ausnahmefall; normale Mono-Programme tun dies nicht.

2voto

CodeAndCats Punkte 6778

Ja, Sie können in c# oder anderen Dotnet-Sprachen wie VB.Net schreiben, wenn Sie gegen Mono kompilieren. Mono kompiliert Ihren Code in IL (eine Zwischensprache), die Sie bereitstellen und dann JIT (just in time) kompiliert wird, wenn ausgeführt.

Mono kann auf einer Reihe von Plattformen wie Windows, Mac OSX, Linux und sogar dem iPhone ausgeführt werden. Obwohl mit der iPhone-Implementierung, ich glaube, Ihr Code ist in der Tat nahtlos zu Objective C kompiliert, die dann zu nativen Code statt zu IL kompiliert wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X