我写了一个小的 Python 扩展,它与一个带有一个可选 .S(汇编程序)文件的小型 C 库进行捆绑、编译和静态链接。默认情况下,Distutils 的 Extension() 不识别 .S。是否有编译该文件的好方法,或者我应该直接使用 make
?现在我只为稍微慢一点的库编译 C 代码。
最佳答案
我不知道它有多新,但是 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
中,则汇编函数已正确组装和链接>,但如果您不将其包含在该参数中,则它们不会链接。所以它似乎有效。
关于python - Python的distutils可以编译.S(汇编)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664812/