【问题标题】:Distutils setup generate .so and not .dylib on Mac OS XDistutils 安装程序在 Mac OS X 上生成 .so 而不是 .dylib
【发布时间】:2015-09-24 08:42:18
【问题描述】:

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

库的 cythonization 完美运行。但是,在 Mac OS X 10.10.5 上使用 distutils.core.setup 调用创建库文件时,会生成一个文件 .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 格式的文件?

感谢您的回答

【问题讨论】:

    标签: python macos compilation distutils


    【解决方案1】:

    我正在尝试做类似的事情,对我来说这个答案有帮助:How to create a .dylib C extension on mac os x with distutils and/or setuptools?

    关键代码片段是:

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

    添加到 setup.py

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 2011-07-28
      • 2017-01-16
      • 2013-11-09
      • 1970-01-01
      相关资源
      最近更新 更多