Добавление AM_LDFLAGS не влияет на окончательную библиотеку, вызывая ошибки компоновщика

Я использую GNU autohell для моего проекта, который является библиотекой C ++. Следует связать с ZMQ и повысить. Поэтому я добавил эту проверку для необходимых библиотек в configure.ac

PKG_CHECK_MODULES(ZMQ, libzmq >= 3.2.3)

и флаги компоновщика в Makefile.am:

AM_LDFLAGS = -lzmq

Все компилируется и ссылки, но я получил неопределенные ошибки ссылок при попытке использовать библиотеку в реальном приложении. Я задавался вопросом, действительно ли это связывает против необходимых библиотек или нет. Удивительно, но результат ldd это так:

ldd ./libait-0.1.0.so
linux-vdso.so.1 =>  (0x00007fff85dfd000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fea7efa4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fea7ebe5000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fea7e9ce000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fea7e6d2000)
/lib64/ld-linux-x86-64.so.2 (0x00007fea7f4d9000)

Там нет ни ссылки на ZMQ, ни других библиотек, добавленных таким образом. Что я делаю неправильно?

Обновить

Содержание Makefile.am

AUTOMAKE_OPTIONS = subdir-objects
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4
#AM_LDFLAGS = -lzmq
libait_la_LIBADD = $(ZMQ_LIBS)
lib_LTLIBRARIES = libait-@[email protected]
AM_CPPFLAGS = -pipe
libait_@AIT_API_VERSION@_la_SOURCES = ....
libait_@AIT_API_VERSION@_la_LDFLAGS = -version-info $(AIT_SO_VERSION)
ait_includedir = $(includedir)/ait
ait_include_HEADERS =  ....
ait_libincludedir = $(libdir)/ait-$(AIT_API_VERSION)/include
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = ait-$(AIT_API_VERSION).pc
dist_noinst_SCRIPTS = autogen.sh

1

Решение

PKG_CHECK_MODULES(ZMQ, libzmq >= 3.2.3) устанавливает переменные: ZMQ_CFLAGS а также ZMQ_LIBS,

использование AC_SUBST(ZMQ_LIBS) в configure.ac для Makefile.am переменная подстановки:
libait_la_LIBADD = $(ZMQ_LIBS)

Такой подход позволяет libtool обрабатывать зависимости библиотеки и поддерживать информацию о зависимостях в libait.la файл.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]