Как добавить ссылку на библиотеку в 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]