小编vpe*_*ron的帖子

使用Libtool强制将静态库链接到共享库

我有一个库(libfoo),使用libtool编译成两个对象:libfoo.a和libfoo.so.

我还必须使用libtool创建另一个库(libbar),它将是一个包含所有libfoo代码的共享库(libbar.so).

为了做到这一点,我必须强制libbar链接libfoo.a,而不是libfoo.so.

我在autotools环境中,所以我必须使用标准的configure.inMakefile.am规则来解决这个问题.

我试过几件事,比如configure.in:

LDFLAGS="$LDFLAGS "-Wl,-Bstatic -lfoo -Wl,-Bdynamic"
Run Code Online (Sandbox Code Playgroud)

这总是会在链接行上产生-Wl标志; 但是-lfoo已经消失了,并且在它的开头被放置在绝对路径形式(/opt/foo/lib/libfoo.so)中.

我也尝试过:

LDFLAGS="$LDFLAGS "-L/opt/foo/lib libfoo.a"
Run Code Online (Sandbox Code Playgroud)

或者在Makefile.am中:

libbar_la_LDADD = -Wl,-Bstatic -lfoo -Wl,-Bdynamic
Run Code Online (Sandbox Code Playgroud)

libbar_la_LTLIBRARIES = libfoo.a
Run Code Online (Sandbox Code Playgroud)

等等(有很多很多变种!)

但我认为我绝对不具备Autotools/Libtool足够的知识来解决这个问题.我无法在网上找到有关它的信息,总是略有不同的问题.

static shared autotools libtool

11
推荐指数
2
解决办法
5018
查看次数

标签 统计

autotools ×1

libtool ×1

shared ×1

static ×1