美文网首页
Python如何编译出C语言的扩展

Python如何编译出C语言的扩展

作者: 赵枝阳 | 来源:发表于2019-07-28 11:23 被阅读0次

    1. 编写两个文件, .c的源码文件, 内容可参考如下:

    #include <stdio.h>

    #include "Python.h"

    int fac(int n) {

        if (n < 2) return 1;

        else return n * fac(n - 1);

    }

    static PyObject* fac_fac(PyObject* self, PyObject* args) {

        int num;

        if (!PyArg_ParseTuple(args, "i", &num)) {

            return NULL;

        }

        return (PyObject*)Py_BuildValue("i", fac(num));

    }

    static PyMethodDef facMethods[] = {

        {"fac", fac_fac, METH_VARARGS},

        {NULL, NULL},

    };

    void initfac() {

        Py_InitModule("fac", facMethods);

    }

    int main() {

        return 0;

    }

    2. 后面就是利用python的distutils模块编译出C的SO库,文件名称为setup.py, 内容如下:

    from distutils.core import setup, Extension

    setup(name = "fac", ext_modules = [Extension("fac", sources = ["fac.c"])])

    3. python setup.py build 会编译出产物到 build/ 下面, 后面在运行 sudo python setup.py install, 就会把so库安装到 /usr/local/lib/python2.7/dist-packages 下面, 此时这里就有一个 fac.so 文件, 如果你的模块名称是 fac 的话。

    相关文章

      网友评论

          本文标题:Python如何编译出C语言的扩展

          本文链接:https://www.haomeiwen.com/subject/qipurctx.html