Comstackr Python en C en utilisant Cython

J’essaie de comstackr le code source python foo.py en C en utilisant cython .

Dans foo.py :

 print "Hello World" 

La commande que je cython foo.py est cython foo.py

Le problème est que lors de la compilation de foo.c en utilisant gcc , j’obtiens l’erreur:

undefined reference to 'main' .

lors de la conversion du code de python en c (en utilisant Cython), il le convertit en code c qui peut être compilé dans un object partagé. pour le rendre exécutable, vous devez append “–embed” à la commande cython conversion. Cet indicateur ajoute la fonction ‘main’ dont vous avez besoin, vous pouvez donc comstackr le code c dans un fichier exécutable. Veuillez noter que vous aurez besoin des bibliothèques d’exécution python .so pour pouvoir exécuter exec.

Lisez la documentation de Cython. Cela vous permettra également (espérons-le) de vous apprendre ce qu’est Cython et ce qu’il n’est pas. Cython sert à créer des extensions python (et non un compilateur Python-C à usage général), qui sont des objects / dll partagés. Les bibliothèques chargées dynamicment n’ont pas de fonction main comme les programmes autonomes, mais les compilateurs supposent qu’ils relient finalement un exécutable. Vous devez leur dire autrement via flags ( -shared methinks, mais encore une fois, consultez la documentation de Cython) – ou mieux encore, ne vous comstackz pas, utilisez setup.py pour cela (encore une fois, lisez la documentation de Cython).

La manière habituelle est d’utiliser des distutils pour comstackr le fichier généré par cython. Cela vous donne également tous les répertoires d’inclusion dont vous avez besoin de manière portable.