首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用distutils和build_clib构建C库

利用distutils和build_clib构建C库
EN

Stack Overflow用户
提问于 2013-05-31 17:27:29
回答 1查看 3.6K关注 0票数 18

有没有人有一个很好的例子,在setup.py中使用distutils中的build_clib命令来构建外部(非python)C库?关于这个主题的文档似乎很少或根本不存在。

我的目标是构建一个非常简单的外部库,然后构建一个链接到它的cython包装器。我找到的最简单的例子是here,但它使用了对gcc的system()调用,我无法想象这是最佳实践。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-01 17:12:00

不是将库名作为字符串传递,而是传递一个带有要编译的源代码的元组:

setup.py

代码语言:javascript
复制
import sys
from distutils.core import setup
from distutils.command.build_clib import build_clib
from distutils.extension import Extension
from Cython.Distutils import build_ext

libhello = ('hello', {'sources': ['hello.c']})

ext_modules=[
    Extension("demo", ["demo.pyx"])
]

def main():
    setup(
        name = 'demo',
        libraries = [libhello],
        cmdclass = {'build_clib': build_clib, 'build_ext': build_ext},
        ext_modules = ext_modules
    )

if __name__ == '__main__':
    main()

hello.c

代码语言:javascript
复制
int hello(void) { return 42; }

hello.h

代码语言:javascript
复制
int hello(void);

demo.pyx

代码语言:javascript
复制
cimport demo
cpdef test():
    return hello()

demo.pxd

代码语言:javascript
复制
cdef extern from "hello.h":
    int hello()

代码可以作为要点提供:https://gist.github.com/snorfalorpagus/2346f9a7074b432df959

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16854066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档