3

我正在编写一个需要处理 XML 的静态库。我希望它包含开箱即用所需的所有内容,但我不知道如何使其他静态库链接到它,即 libxml2。

我将-c标志传递给 gcc 以生成.o该标志,ar然后用于创建库。我必须通过什么神奇的标志组合才能让我的静态库吞下 libxml2?

4

3 回答 3

4

图书馆不只是吞并其他图书馆。有两种解决方案可以做我能想到的事情。

  1. 与最终目标中的两个库链接,首先指定新库。
  2. 复制 libxml2 库,然后使用 lib 工具将您的对象添加到其中。
于 2013-12-18T12:57:52.077 回答
2

可悲的是,对我来说最有效的是.o从静态库中提取所有 s ,然后将它们包含在您.o的 s 中以制作一个.a

因此,您可以查看libxml2.awith的内容ar t libxml2.a
让我们为简单起见说它只包含:xml2a.o并且xml2b.o
您想将这些与您的内容结合mine.o起来mine.a

你需要先做ar x libxml2.a才能出去xml2a.o然后xml2b.o
ar cr mine.a mine.o xml2a.o xml2b.o

对最广泛使用的命令的简单解释ar,尽管我可能已经总结了你从这里得到的东西。

于 2013-12-18T13:23:34.227 回答
0

手动将对象合并到一个新的静态库实例中:

ar -x libx.a
ar -x liby.a
ar -c libz.a  *.o
于 2013-12-18T16:31:03.163 回答