【发布时间】:2011-12-07 00:39:28
【问题描述】:
我正在维护一个构建“前端”库和多个“后端”库的库项目。该项目使用了包括 Libtool 在内的 Autotools 套件(我正在学习并发现我们的项目的实现需要维护)。作为共享库,这一切都很好。我们有一个使用该库的应用程序开发人员,他更喜欢使用静态库来构建,以便在多个平台上轻松分发软件(我不想讨论他的动机)。
他告诉我,之前他能够使用我们的构建系统构建一个大型静态库,但现在无法做到。我无法准确追踪何时发生这种情况,但怀疑它可能与两个更改之一有关。第一个更改是删除捆绑的 libtool 源目录。第二个是将后端库放置在 /usr/local/lib/project 中,而不是像以前一样将它们分散在 /usr/local/lib 中(默认位置)。
我一直无法学习的是如何将前端库与后端组合到 /usr/local/lib 下的单个便利库中,并在 Autotools 框架内这样做。这似乎是可能的,但我还没有找到一个可以学习的例子。
顺便说一句,这些项目构建了几个实用程序作为我们测试套件的一部分。我使用 --disable-shared 选项运行配置,然后运行,实用程序静态链接到项目库。现在我的任务是让第三方应用程序可以使用此功能。
【问题讨论】:
-
您是否运行了相当于
git bisect的版本控制来确定是哪个提交负责? -
没有。我不确定他使用的命令以及他当时是否使用了自己的脚本。另外,我自己从来没有以这种方式构建库,因为我不关心静态库。大约一年前,我第一次了解到这一点,并且断断续续地寻找答案或至少一些线索。
-
将 /usr/local/lib 中的安装目录统一描述为“分散”而不是将 /usr/local/lib/[project]/ 中的安装位置分散描述为似乎很奇怪这样的。
-
@WilliamPursell 在当时描述它可能是一种奇怪的方式。目前这并不重要,因为该项目已转变为拥有一个解决此问题的大型库和其他几个作为奖励。
标签: static-libraries autotools autoconf automake libtool