For*_*rge 11 c python linux gcc cython
我正在尝试将python源代码foo.py 编译为C使用cython.
在foo.py:
print "Hello World"
Run Code Online (Sandbox Code Playgroud)
我正在运行的命令是cython foo.py.
问题是,在编译foo.c时gcc,我得到错误:
undefined reference to 'main'.
Roe*_*eeK 20
当将代码从python转换为c(使用Cython)时,它将其转换为可以编译为共享对象的c代码.为了使其可执行,你应该在cython转换命令中添加"--embed".这个标志添加了你需要的'main'功能,所以你可以将c代码编译成可执行文件.请注意,您需要python .so运行时库才能运行exec.
小智 11
阅读Cython文档.这也将(希望)教你Cython是什么,不是什么.Cython用于创建python扩展(不是通用的Python-to-C编译器),它们是共享对象/ dll.动态加载的库没有main像独立程序那样的功能,但编译器假设它们最终链接可执行文件.你必须通过标志告诉他们(-sharedmethinks,但是再次参考Cython文档) - 或者甚至更好,不要自己编译,使用一个setup.py(再次,阅读Cython文档).