11
votes

Mono compile C # et à Native?

Je suis nouveau à Mono et je viens de commencer récemment. Le programme Mono est-il compilé de C # au code natif pour pouvoir fonctionner sur plusieurs OS?

Et aussi, j'ai vu un screencast sur MonoTouch, qui me dit que le MonoTouch (en particulier) compilait tout à la natation pour C # pour pouvoir courir sur iPhone.

im assez confondre.


0 commentaires

6 Réponses :


1
votes

Le noyau du projet mono est un gigot de msil (la langue intermédiaire produite par les compilateurs .NET).

Bien sûr, un compilateur juste à temps est toujours un compilateur et vous pouvez simplement prendre le code natif produit par le processus JIT et exécuter cela plus tard. Selon la gigue, cela pourrait fournir des installations explicitement pour le faire.


0 commentaires

5
votes

Mono elle-même compilera à la bytecode .NET CLR, ce qui lui permettra d'exécuter sur n'importe quelle plate-forme .NET ou mono-compatible. Ces exécutables ne sont pas fabriquées d'instructions de la machine natif; Ils sont juste à temps compilés dans un code natif par le temps d'exécution sur le système l'exécutant. En bref, les binaires mono sont portables.

AS de Cocoatouch, la compilation au code natif était nécessaire car Apple n'autorise pas les systèmes tels que mono sur l'iPhone. C'est un cas exceptionnel; Les programmes normaux de Mono ne feront pas cela.


0 commentaires

7
votes

À peu près toutes les plates-formes .NET, les deux Microsoft (y compris le bureau, le cadre compact et le microframework) et tiers (tels que mono) compilent tout d'abord à un langage intermédiaire commun qui est portable, puis compilé juste à temps pendant l'exécution au code natif. Certains n'ont pas de JIT et simplement interpréter l'IL directement.

Le code natif est évidemment non portable.

Est-ce que cela aide?


0 commentaires

22
votes

Mono par défaut compile à un bytecode intermédiaire, qui est ensuite exécuté sur une machine virtuelle. Ce code d'octet est portable mais n'est pas un code de machine natif.

mono a Un compilateur AOT qui produira des images natales pour quand Bytecode n'est pas une option .


0 commentaires

2
votes

Oui, vous pouvez écrire en C # ou dans d'autres langues de dotnet comme vb.net lors de la compilation contre Mono. Mono compile votre code à IL (une langue intermédiaire) que vous déployez et obtient ensuite JIT (juste à temps) compilé lorsque vous avez couru.

Mono peut exécuter un certain nombre de plates-formes telles que Windows, Mac OSX, Linux et même l'iPhone. Bien que avec la mise en œuvre de l'iPhone, je pense que votre code est en fait peu compilé à l'objectif C qui est ensuite compilé au code natif plutôt qu'à il.


0 commentaires

7
votes

Consultez 'MkBundle' pour compiler l'heure d'exécution mono dans votre exécutable. par exemple. Mkbundle --Static --Deps Hello.exe -o Bonjour


0 commentaires