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