Journal C# ou Java en compilation native

Posté par  (site web personnel) .
Étiquettes : aucune
0
17
juil.
2004
Je voudrais savoir si il existe un projet équivalent à gcj pour le C#, J'aime les deux langages (je parle des langages ) pas de Mono ou J2EE, en revanche je n'aime pas le principe des machines virtuelles (pas plus d'explication, c'est juste une question de goût, pas envie de me lancer dans un troll ;)).
GCJ est vraiment super bien gaulé, mais je rencontre régulièrement des problèmes quand je veux utiliser certaines libs, ou certaines fonctions : String.plit par exemple.
avec Mono on dispose d'une nombre de bibliothèques libres qui me semble plus conséquent que celles disponibles pour GCJ, mais je n'aime pas avoir des .exe et autres .dll sur ma machines, même si on peut les renommer, ca ne me plait pas.
Donc est-il possible de compiler en natif du C# sous linux en récupérant le framework mono et en le compilant lui aussi totalement en natif, juste pour satisfaire mes envies ? ;).
Ca sert à rien de me parler de la théorie sur les vitesses d'exécution des machines virtuelles par rapport au natif et réciproquement, je veux juste des bons gros binaires ;)
  • # natif ou pas

    Posté par  (site web personnel) . Évalué à 3.

    la VM de Mono est forcement en natif.
    le framework (les bibliothèques) fait souvent de simple appels à des bibliothèques natives (comme par exemple GTK ou Gecko)
    Sinon tu as une option dans mono :
    --aot Compiles the assembly to native code
    bref, c'est le taf de la machine virtuelle, taf qu'elle effectue habituellement "juste à temps", avant l'exécution.

    Ensuite tu peux inclure Mono dans ton binaire si ca t'amuse, comme ca tu auras un seul exécutable que tu lancera traditionnellement (et t'auras un bon gros binaire).

    Sinon je ne connais pas de compilateur C# qui compile en natif, désolé.
    • [^] # Re: natif ou pas

      Posté par  . Évalué à 3.

      C'est pas forcément très clair dans ton message, donc je le précise: la compilation à l'aide du switch --aot (pour "ahead of time", par opposition à "just in time") créé un fichier natif en .so, mais celui-ci est accompagné d'un .exe en CLI.
      Pourquoi ?
      Parce que d'après la doc, même lorsqu'il est compilé en natif, il semblerait que le code produit ait besoin des metadonnées, qui ne peuvent être contenue que dans le CLI et qui nécessitent la présence de la VM.
      • [^] # Re: natif ou pas

        Posté par  (site web personnel) . Évalué à 1.

        Merci pour toutes ces réponses, j'attendrais un projet équivalent à gcj pour C#, en fait, dans cette histoire, tout ce qui m'intéresse c'est le langage que je trouve agréable, comme java...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.