Autoconf, общая и статическая библиотека Libtool

Я использую инструменты autoconf gnu для создания своего продукта. Он генерирует как общую, так и статическую библиотеку для любой библиотеки, в которой упоминается * .la. Проблема в том, что вы используете .la для компоновки двоичного файла в Makefile.am. Он связывается с динамической библиотекой, но когда вы используете ldd для двоичного файла, он говорит «не динамический исполняемый файл», хотя он связывается с разделяемой библиотекой. Я доказал это, удалив общую библиотеку после сборки двоичного файла, а затем попытался запустить двоичный файл. Он не нашел общую библиотеку и не мог работать. Другой вопрос, как разместить библиотеку в указанном месте, используя направление Makefile.am?


person siddhusingh    schedule 10.03.2011    source источник


Ответы (1)


Похоже, вы запускаете ldd для сценариев оболочки, созданных libtool. Они используются для связывания неустановленных библиотек с неустановленными исполняемыми файлами. Настоящие двоичные файлы помещаются в каталог .libs.

Вы можете установить библиотеку в определенное место таким образом

mylibrary_LTLIBRARIES = libmylibrary.la
mylibrarydir = ${libdir}/my_plugins/
person graphite    schedule 10.03.2011
comment
Да Графит, я ошибался. Ваш ответ мне помог. Какое ключевое слово для верхнего каталога, например, у нас $ {libdir} и т. Д ... - person siddhusingh; 14.03.2011
comment
@siddhusin Существует список переменные. Вы можете использовать $ {prefix} в качестве корневого каталога. Позже его можно настроить как ./configure --prefix=<prefix_dir> - person graphite; 14.03.2011
comment
Еще раз спасибо :) В основном я не хочу, чтобы конфигурация принимала какие-либо аргументы. Потому что это для нескольких людей, и они могут забыть указать --prefix. Так что даже если мне нужно жестко запрограммировать его в configure.ac, все в порядке. - person siddhusingh; 17.03.2011
comment
@siddhusin U может установить префикс по умолчанию для макроса AC_PREFIX_DEFAULT(prefix) в configure.ac равным /. Прочтите Префикс по умолчанию - person graphite; 17.03.2011