2010-04-04 14 views
9

Comme le titre l'indique, existe-t-il des compilateurs/interpréteurs de bytecode C/C++? J'écris une application dans un langage interprété qui dépend de certaines bibliothèques qui sont entièrement compilables (il n'y a pas de drapeaux spéciaux pour indiquer les changements de code pendant la compilation pour une certaine plate-forme) mais sont écrites en C et C++. Plutôt que d'expédier des libs spécifiques à n-platform avec chaque plate-forme, il serait bon d'expédier un ensemble de librairies interprétées par un interpréteur spécifique à une plate-forme.N'importe quel compilateur/interpréteur de code à octets non-natif?

Possible et/ou disponible?

EDIT1: Le langage interprété en question est Python, bien que je puisse également utiliser Ruby.

+2

Quelle langue interprétée? Beaucoup des plus populaires ont des moyens portables d'ajouter des extensions C (et peut-être C++). –

+1

'llvm-gcc' et' clang' existent dans LLVM pour ce travail, je pense. –

+0

La langue est python, bien que je puisse aussi utiliser Ruby. Je peux utiliser les deux ou l'un ou l'autre, tous j'ai un diagramme donc je n'ai pas encore commencé. – Matt

Répondre

3

Quelle langue interprétée utilisez-vous? S'il a une implémentation basée sur .NET (par exemple IronPython), vous pouvez éventuellement l'utiliser avec le compilateur C++/CLI pour produire du code octet pour le .NET CLR et Mono.

Cela ne sera probablement possible que si vous avez un contrôle total sur vos bibliothèques C++.

+0

Honnêtement, je n'avais pas pensé à le faire – Matt

+0

L'utilisation de Mono n'est peut-être pas la façon la plus stable d'y parvenir. En particulier pour Python, qui dispose déjà de moyens portables pour distribuer les extensions C. –

+0

En utilisant l'approche standard, le code Python est portable, mais les bibliothèques C/C++ doivent être recompilées pour chaque plate-forme. Approche Mono, mais il ne répond pas à la "navire un ensemble de bibliothèques qui sont interprétées par un interpréteur spécifique à une plate-forme "exigence pour les bibliothèques C/C++. – richj

1

Si vous n'êtes pas sûr sur l'utilisation de la machine virtuelle .NET/CLR, vous pouvez alors donner la machine virtuelle Java un essai avec LLJVM (via LLVM-gcc) et soit Jython ou JRuby.