我编写了一个小型 Python 扩展,它与一个带有一个可选 .S(汇编程序)文件的小型 C 库捆绑、编译和静态链接。Distutils 的 Extension() 默认不识别 .S。有没有编译该文件的好方法,或者我应该直接使用make
?现在我只为一个稍慢的库编译 C 代码。
问问题
377 次
3 回答
3
我不知道它有多新,但是这个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
,但如果您未将其包含在该参数中,则它们不会链接。所以它似乎工作。
于 2017-12-19T22:52:30.383 回答
2
作为分布式,distutils 不知道汇编代码,我也不知道让它自动处理它的扩展。在类似的情况下,我总是单独构建库(根据需要和可行使用 C 和汇编),并且只使用.a
setup.py 生成的结果。
于 2009-11-03T02:19:38.890 回答
0
有一个关于此的开放功能请求:http: //bugs.python.org/issue2942
于 2011-10-09T10:21:18.763 回答