Je voulais tester Mono Aot, donc j'ai écrit une simple application de console avec monodevelop: Il a créé un fichier nommé "abc.exe" dans bin / débogage. Quand j'essaie de faire: P> Code: 51 Info: 5 Ex Info: 8 Unwind Info: 31 Class Info: 30 PLT: 2 GOT Info: 11 GOT Info Offsets: 16 GOT: 20 Offsets: 48
Compiled 2 out of 3 methods (66%)
1 methods have other problems (33%)
Methods without GOT slots: 1 (33%)
Direct calls: 0 (100%)
JIT time: 1 ms, Generation time: 0 ms, Assembly+Link time: 0 ms.
3 Réponses :
Quel est votre environnement et votre version mono? P>
AOT fonctionne uniquement sur x86, X86-64 et bras, et uniquement sur Linux et peut-être Mac. P>
Si vous êtes sur l'une de ces plates-formes et sur la dernière version mono (2.6), il ressemble à un bug qui devrait probablement être déposé à http://www.mono-project.com/bugs . p>
Vous ne devriez pas démarrer le fichier de sortie .SO, il vous suffit d'exécuter mono sur l'original géré .exe et il récupérera le fichier AOT automatiquement. P>
Qu'est-ce que Skolima a dit raison, il est assez étrange qu'il ait été voté. p>
Vous n'êtes pas censé utiliser directement la sortie générée par le compilateur AOT de Mono. P>
La compilation AOT de Mono est un processus qui cache la sortie de la compilation JIT et la laisse dans une bibliothèque partagée chargée par le temps d'exécution mono à la demande. Le fichier .so généré contient le code pré-compilé et les métadonnées nécessaires à être consommées par le temps d'exécution. P>
Pour utiliser le fichier AOT, vous venez d'appeler votre programme comme celui-ci: p>
mono programme.exe p>
Mono chargera les métadonnées à partir de programme.exe et de sonde pour l'existence d'un programme.exe.so pour éviter de faire une compilation juste à temps au moment de l'exécution et utilisez plutôt le code du fichier .so. Le même processus est appliqué sur toutes les bibliothèques référencées. P>
Même le mode compilation statique de Mono produit du code qui nécessite le présent fichier .exe d'origine. p>
Si ce que vous vouliez réaliser était un exécutable natif, vous pouvez essayer la commande mkbundle qui conditionnent le mono exécutant et votre programme dans un seul exécutable. P>