Мне нужно сделать расширение C с distutils (и/или setuptools), которое можно использовать ОБА динамически во время выполнения и во время компиляции (для разных целей). Это не проблема в Linux, но это проблема в OS X. По умолчанию distutils создает «пакет» в OS X (и называет его .so), который можно использовать во время выполнения, но НЕ во время компиляции. Мне нужно создать .dylib, на который можно связать во время компиляции, и мне нужно сделать это в setup.py, который я могу упаковать для PyPI.
Что бы я ни пытался, distutils продолжает создавать пакет, и когда я пытаюсь скомпоновать эту библиотеку, я получаю сообщение об ошибке. Вы можете явно проверить, создал ли 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