Python — Как встроить общую библиотеку в другую?

Предположим, я расширяю функцию C ++ до Python, создавая libA.so, но libA.so зависит также в другой общей библиотеке libB.so. Я хочу раздать libA.so конечному пользователю таким образом, чтобы он уже содержит (встраивает) libB.so, то есть конечный пользователь не нужно получать libB.so или установить его / ее LD_LIBRARY_PATH, чтобы он указывал на папку, содержащую libB.so (в случае, если эта библиотека присутствует в файловой системе конечного пользователя).

Поэтому в основном я хочу создать разделяемую библиотеку libA.so, которая не относится ни к какой другой (статической или разделяемой) библиотеке.

Вопрос 1: есть ли способ сделать это в Linux?

Вопрос 2. Можно ли это сделать, настроив скрипт установки python на основе distutils.core? (вероятно, вопрос 1 также даст ответ на этот вопрос)

Спасибо

0

Решение

Вопрос 1: есть ли способ сделать это в Linux?

Системы UNIX в целом (с заметным исключением AIX) и Linux в частности, учитывают a.out а также libfoo.so «полностью приготовленный» и «окончательный». Нет способа связать их.

Я хочу создать разделяемую библиотеку libA.so, которая не относится ни к какой другой (статической или разделяемой) библиотеке.

Вы Можно сделать это, связав объекты это было бы связано в libB.so в libA.so вместо.

Однако обратите внимание, что если ваши пользователи хотят ссылаться на libB.so самостоятельно, тогда нужно быть особенно осторожным, чтобы не нарушать одно определение правила. Это может быть достигнуто путем сокрытия всех libBСимволы внутри libA.so (инструкции Вот).

Также обратите внимание, что это может иметь последствия для лицензирования — если libB распространяется под GPL, а затем связать его в libA создает производное произведение, которое также должно распространяться по той же лицензии.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]