Как добавить ссылку на библиотеку в autoconf configure script / makefile - PullRequest
15 голосов
/ 13 января 2010

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

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

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

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

Кстати, это мое сообщение об ошибке.

Ответы [ 2 ]

18 голосов
/ 18 января 2010

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

AM_LDFLAGS = -lboost_system-mt

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

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

1 голос
/ 24 апреля 2013

Используйте ax_cxx_check_lib.m4, потому что boost_system не имеет каких-либо внешних символов "C" (не измененных имен), которые можно проверить с помощью 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 = -lboost_system@BOOST_LIB_SUFFIX@
...