Предположим, я расширяю функцию 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 также даст ответ на этот вопрос)
Спасибо
Вопрос 1: есть ли способ сделать это в Linux?
Системы UNIX в целом (с заметным исключением AIX) и Linux в частности, учитывают a.out
а также libfoo.so
«полностью приготовленный» и «окончательный». Нет способа связать их.
Я хочу создать разделяемую библиотеку libA.so, которая не относится ни к какой другой (статической или разделяемой) библиотеке.
Вы Можно сделать это, связав объекты это было бы связано в libB.so
в libA.so
вместо.
Однако обратите внимание, что если ваши пользователи хотят ссылаться на libB.so
самостоятельно, тогда нужно быть особенно осторожным, чтобы не нарушать одно определение правила. Это может быть достигнуто путем сокрытия всех libB
Символы внутри libA.so
(инструкции Вот).
Также обратите внимание, что это может иметь последствия для лицензирования — если libB
распространяется под GPL, а затем связать его в libA
создает производное произведение, которое также должно распространяться по той же лицензии.
Других решений пока нет …