是否可以强制与automake和libtool进行部分链接

时间:2019-05-21 16:18:26

标签: automake libtool

使用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

任何想法或帮助将不胜感激。

0 个答案:

没有答案