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

问题描述 投票:4回答:3

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

python distutils
3个回答
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
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.