使用automake是否可以通过部分链接两个其他目标文件来指定构建目标文件?
我可以直接使用ld来指定:
ld -r core2.o libthird-party.a -o partially-linked.o
为什么?好吧,我正在构建一个节点插件,并且(由于错误)节点11.10.0+当前正在导出一个满足程序未定义符号之一的符号。因此,makefile.am生成的.so
或.a
文件将被node-gyp用于构建节点插件。
似乎(而且我是automake / libtool环境的新手),即使libthird-party.a提供了该符号,现有的设置仍未解决core2中的符号。我已经手动测试了部分链接,它确实解决了这个问题。我的问题是如何在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
任何想法或帮助将不胜感激。