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