Я хотел бы изменить файл setup.py таким образом, чтобы команда «python setup.py build» компилировала модуль расширения на основе C, который статически (а не динамически) связан с библиотекой.
Расширение в настоящее время динамически связано с рядом библиотек. Я хотел бы оставить все без изменений, кроме статической привязки только к одной библиотеке. Я успешно сделал это, вручную изменив вызов gcc, который запускается distutils, хотя для этого требовалось, чтобы я явно перечислил зависимые библиотеки.
Возможно, это слишком много информации, но для ясности это последняя команда компоновки, которая была выполнена во время скрипта «python setup.py build»:
gcc -pthread -shared -L/system/lib64 -L/system/lib/ -I/system/include build/temp.linux-x86_64-2.7/src/*.o -L/system/lib -L/usr/local/lib -L/usr/lib -ligraph -o build/lib.linux-x86_64-2.7/igraph/core.so
А это моя ручная модификация:
gcc -pthread -shared -L/system/lib64 -L/system/lib/ -I/system/include build/temp.linux-x86_64-2.7/src/*.o -L/system/lib -L/usr/local/lib -L/usr/lib /system/lib/libigraph.a -lxml2 -lz -lgmp -lstdc++ -lm -ldl -o build/lib.linux-x86_64-2.7/igraph/core.so
Раздел 2.3.4 Распространение модулей Python обсуждает спецификацию библиотек, но только "library_dirs" подходит, и эти библиотеки динамически связаны.
Я использую среду Linux для разработки, но пакет также будет скомпилирован и установлен в Windows, поэтому мне нужно портативное решение.
Может кто-нибудь сказать мне, где искать инструкции или как изменить сценарий setup.py? (Заранее спасибо!)
Я новичок в StackOverflow, поэтому приношу свои извинения, если я неправильно отметил этот вопрос или допустил какую-то другую ошибку в этом сообщении.