使用Cython将Python编译为C

我正在尝试使用cythonpython源代码foo.py编译成C cython

foo.py

 print "Hello World" 

我正在运行的命令是cython foo.py

问题是,使用gcc编译foo.c时,出现错误:

undefined reference to 'main'

Solutions Collecting From Web of "使用Cython将Python编译为C"

当将代码从python转换为c(使用Cython)时,它将其转换为可以编译为共享对象的c代码。 为了使其可执行,您应该添加“–embed”到cython转换命令。 这个标志添加了你需要的'main'函数,所以你可以把c代码编译成可执行文件。 请注意,您将需要python .so运行时库来运行exec。

阅读Cython文档。 这也会(希望)会教你什么是Cython,什么不是。 Cython用于创建Python扩展(不是通用的Python到C编译器),它们是共享对象/ dll。 动态加载的库没有像独立程序那样的main函数,但编译器假定它们最终链接一个可执行文件。 你必须通过标志( -shared methinks,但是再次参考Cython文档)告诉他们 – 或者甚至更好,不要自己编译,使用setup.py (再次阅读Cython文档)。

通常的方法是使用distutils来编译cython生成的文件。 这也给你所有需要的包括目录以便携的方式。