Как добавить ссылку на библиотеку в autoconf configure script/makefile

Я autotools newb и мне трудно понять, как легко свяжите определенную библиотеку с одной из настроенных целей.

У меня есть исходный пакет, который я хочу создать обычным способом: . /configure && & make && make install

К сожалению, один из cpps имеет недостающую ссылку на другую библиотеку. Составление его вручную (настройка командной строки). Но я бы предпочел "запланировать" компиляцию script. Где стандартное место для редактирования ссылок ссылок?

 undefined reference to `boost::system::get_system_category()

Это сообщение об ошибке btw.

Ответ 1

Вам нужно добавить соответствующий флаг -l в AM_LDFLAGS в Makefile.am; например:.

AM_LDFLAGS = -lboost_system-mt

Обратите внимание, что библиотеки Boost обычно заканчиваются суффиксом - последовательность букв, указывающая конфигурацию сборки. В приведенном выше примере суффикс -mt. Это может быть другим в вашей установке (хотя вариант -mt обычно доступен в системах POSIXy, IME).

Я делаю что-то вроде этого:

AM_LDFLAGS = -lboost_system$(BOOST_LIB_SUFFIX)

BOOST_LIB_SUFFIX - драгоценная переменная (см. AC_ARG_VAR), которая по умолчанию равна -mt.

Ответ 2

Использовать ax_cxx_check_lib.m4, потому что у boost_system нет внешних символов "C" (unmangled names), которые можно проверить с помощью AC_CHECK_LIB:

http://ac-archive.sourceforge.net/guidod/ax_cxx_check_lib.m4

Загрузите файл выше и назовите его acinclude.m4 и поместите его в папку m4 в корневой каталог проекта.

В configure.ac:

AC_LANG_PUSH([C++])

AX_CXX_CHECK_LIB([boost_system-mt],[boost::system::generic_category()],[BOOST_LIB_SUFFIX="-mt"],[BOOST_LIB_SUFFIX=""])

AC_LANG_POP([C++])

AC_SUBST(BOOST_LIB_SUFFIX)

В Makefile.am:

[artifact_name]_LDFLAGS = [email protected][email protected]