使用Cython将Python编译为C语言

时间:2010-12-12 13:18:20

标签: python c linux gcc cython

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

foo.py

print "Hello World"

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

问题是当使用gcc编译foo.c时,我收到错误:

undefined reference to 'main'

3 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:11)

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

答案 2 :(得分:0)

通常的方法是使用distutils来编译cython生成的文件。这也为您提供了便携式所需的所有包含目录。