gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:27:26 30 4
gpt4 key购买 nike

我有一个库 (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"

这总是会导致链接行上出现 -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 知识来单独解决这个问题。我无法在网上找到有关它的信息,总是略有不同的问题。

最佳答案

您可能可以使用 convenience library 。便利库是未安装的中间静态库。您可以使用前缀 noinst 来构建一个。

noinst_LTLIBRARIES = libfoo_impl.la

lib_LTLIBRARIES = libfoo.la libbar.la
libfoo_la_LIBADD = libfoo_impl.la
libbar_la_LIBADD = libfoo_impl.la

关于static - 使用 Libtool 将静态库强制链接到共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10842949/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com