Я в тупик на автомат ссылку. Даже после многократного перелистывания руководств и поиска в Интернете это, вероятно, недоразумение autotools.automake program libtool wrapper linking
У меня есть одна библиотека .la, созданная libtool, одна библиотека .dylib и я создаю программу. Файл .la связан с .dylib, и программа использует .la.
Makefile.am для .la библиотеки
lib_LTLIBRARIES = libA.la
libA_la_LDFLAGS = ${AM_LDFLAGS} -no-undefined
libA_la_LIBADD = $(LIBM) -Ldir/to/ -lB
libA_la_CPPFLAGS = ${AM_CPPFLAGS}
Makefile.am для программы с LIBTOOL обертке
noinst_PROGRAMS = test
test_SOURCES = test_source.c
test_LDADD = libA.la -Ldir/to/ -lB
libA.la создается и ссылки на B.dylib, но программа испытаний " wrapper ", созданный automake, экспортирует DYLD_LIBRARY_PATH
, чтобы найти libA.la, не ссылаясь на B.dylib. Давать ошибку
dyld: Library not loaded: ./B.dylib
Referenced from: /dir/to/test/.libs/test
Reason: image not found
Trace/BPT trap: 5
Некоторые вещи, которые я пытался добавлении -Ldir/to/ -lB
к test_LDFLAGS
в дополнение к уже добавлены в test_LDADD
. И попробовали установить test_LDFLAGS = -rpath -Ldir/to
в надежде, что установка пути поиска во время выполнения в каталог, где будет использоваться B.dylib.
Если я вручную экспортирую DYLD_LIBRARY_PATH
, чтобы включить /dir/to/B.dylib
, тогда тестовая программа может работать, но я ищу, чтобы autotools позаботился об этом, вместо того чтобы требовать, чтобы кто-то экспортировал путь, прежде чем он сможет его запустить.