Используя automake, есть ли способ указать создание объектного файла, частично связав два других объектных файла?
Используя напрямую ld, я могу просто указать:
ld -r core2.o libthird-party.a -o partially-linked.o
Почему?Ну, я создаю аддон узла и (из-за ошибки) узел 11.10.0+ в настоящее время экспортирует символ, который удовлетворяет одному из неопределенных символов моей программы.Таким образом, полученный .so
или .a
файл, созданный Makefile.am, используется node-gyp для создания аддона узла.
Кажется (и я новичок в среде automake / libtool)что существующая установка оставляет символ в core2 неразрешенным, хотя libthird-party.a предоставляет символ.Я вручную проверил частичное связывание, и это решает проблему.Мой вопрос заключается в том, как указать это в Makefile.am (или в альтернативном подходе, который мог бы выполнить то же самое).
Вот сокращенная версия Makefile.am.Это делает общую библиотеку, а также статическую версию.Я сократил его, чтобы использовать только один сторонний файл и два основных файла.
LIBSOURCES = core.c core2.cc
lib_LTLIBRARIES = libcore.la
libcore_la_SOURCES = $(LIBSOURCES)
libcore_la_LDFLAGS = -export-symbols-regex '^core_' \
-version-info ${CORE_SO_VERSION) -release 1.0 \
$(LIBCORE_LDFLAGS_LIBS_STATIC)/lib/libthird-party.a
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
cd .libs && echo -e "\
CREATE libcore_static.a\n\
ADDLIB libcore.a\n\
ADDLIB libthird-party.a\n\
SAVE\n\
END\n\
" | ar -M
Любые мысли или помощь будут высоко оценены.