Distutils 安装程序在 Mac OS X 上生成 .so 而不是 .dylib

Distutils setup generate .so and not .dylib on Mac OS X

我一直在尝试根据后一个库的开发人员使用 Cython (https://www.ibisc.univ-evry.fr/~fpommereau/SNAKES/snakes-out-of-python.html) 提供的官方教程为 Python 库创建 C 绑定。

库的 cythonization 完美运行。但是,在distutils.core.setup on Mac OS X 10.10.5[=38=上调用创建库文件时],它会生成一个文件 .so。但是,当我需要用库编译示例 .c 文件时,我最终得到以下错误消息:

ld: can't link with bundle (MH_BUNDLE) only dylibs (MH_DYLIB) file './libsnk.so' for architecture x86_64

我查看了 distutils.core.setup 的文档,看看是否有任何方法可以指定生成的文件类型(在我的例子中 .dylib), 失败.

我尝试使用虚拟机 运行 Ubuntu 14.04.3 来按照教程进行操作,并且能够轻松地使其工作。

有没有办法克服这个问题?有没有办法指定 distutils.core.setup 它必须生成一个 .dylib 格式的文件?有没有办法让它与 distutils.core.setup 一起工作,仍然生成一个 .so 格式的文件?

感谢您的回答

我正在尝试做类似的事情,对我来说这个答案很有帮助:

关键代码片段是:

if sys.platform == 'darwin':
    from distutils import sysconfig
    vars = sysconfig.get_config_vars()
    vars['LDSHARED'] = vars['LDSHARED'].replace('-bundle', '-dynamiclib')

添加到 setup.py