【发布时间】:2015-12-01 21:12:17
【问题描述】:
我需要使用 distutils(和/或 setuptools)制作一个可以在运行时和编译时(用于不同目的)动态使用的 C 扩展。这在 Linux 上不是问题,但在 OS X 上是个问题。默认情况下,distutils 在 OS X 上创建一个“捆绑包”(并将其命名为 .so),它可以在运行时使用,但不能在编译时使用。我需要制作一个 .dylib,它可以在编译时链接到,并且我需要在我可以为 PyPI 打包的 setup.py 中完成它。
无论我尝试什么,distutils 都会不断创建一个包,当我尝试链接这个库时,我得到一个错误。您可以通过在命令行上使用 file 来明确检查 distutils 是否创建了包或动态链接库:
file libA.so
libA.so: Mach-O 64-bit bundle x86_64
下面的 cc 命令给了我我想要的:
cc -fPIC -shared source1.o source2.o -o libA.so
file libA.so
libA.so: Mach-O 64-bit dynamically linked shared library x86_64
【问题讨论】:
标签: macos shared-libraries setuptools distutils python-c-extension