我有一个使用 libtool编译成两个对象的库 ( libfoo ) :libfoo.a 和 libfoo.so。
我还必须使用 libtool创建另一个库 ( libbar ),它将是一个包含所有 libfoo 代码的共享库 (libbar.so)。
为了做到这一点,我必须强制libbar链接到libfoo.a,而不是 libfoo.so。
我在一个自动工具环境中,所以我必须使用标准的configure.in或Makefile.am规则来解决这个问题。
我尝试了几件事,例如在 configure.in :
LDFLAGS="$LDFLAGS "-Wl,-Bstatic -lfoo -Wl,-Bdynamic"
这总是导致链接行上的 -Wl 标志;但是 -lfoo 已经消失并且在它的开头被放置在绝对路径形式( /opt/foo/lib/libfoo.so )中。
我也试过:
LDFLAGS="$LDFLAGS "-L/opt/foo/lib libfoo.a"
或在 Makefile.am 中:
libbar_la_LDADD = -Wl,-Bstatic -lfoo -Wl,-Bdynamic
和
libbar_la_LTLIBRARIES = libfoo.a
等等等等(有很多很多变种!)
但我认为我绝对没有足够的 Autotools/Libtool 知识来单独解决这个问题。我一直无法在网上找到有关它的信息,总是略有不同的问题。