Python的distutils可以编译.S(汇编)吗?

时间:2009-11-03 02:09:57

标签: python distutils

我写了一个小的Python扩展,它与一个带有一个可选的.S(汇编程序)文件的小型C库捆绑,编译和静态链接。 Distutils的Extension()默认不识别.S。有没有一种很好的方法来编译该文件,或者我应该只是make?现在我只为稍慢的库编译C代码。

3 个答案:

答案 0 :(得分:2)

作为分布式,distutils不知道汇编代码,我不知道它的扩展,让它自动处理它。在类似的情况下,我总是单独构建库(根据需要使用C和程序集,并且可行)并且仅使用生成的.a和setup.py。

答案 1 :(得分:2)

我不知道它有多新,但是Extension类有一个extra_objects参数,我发现它可以指定汇编文件。例如,我的setup.py看起来像这样:

example_module = Extension('_example',
    extra_compile_args = ['-Wall', '-g', '-std=c++11'],
    sources=['something.cpp'],
    extra_objects=['asm_amd64.s'])

我仔细检查过,如果您使用nm -D example.so检查生成的库,则如果将其包含在extra_objects中,则会正确汇编和链接汇编函数,但如果您不将它们链接在一起把它包含在那个论点中。所以它似乎有效。

答案 2 :(得分:0)

有关于此的公开功能请求:http://bugs.python.org/issue2942