我正在编写一个需要处理 XML 的静态库。我希望它包含开箱即用所需的所有内容,但我不知道如何使其他静态库链接到它,即 libxml2。
我将-c
标志传递给 gcc 以生成.o
该标志,ar
然后用于创建库。我必须通过什么神奇的标志组合才能让我的静态库吞下 libxml2?
图书馆不只是吞并其他图书馆。有两种解决方案可以做我能想到的事情。
可悲的是,对我来说最有效的是.o
从静态库中提取所有 s ,然后将它们包含在您.o
的 s 中以制作一个.a
因此,您可以查看libxml2.a
with的内容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
,尽管我可能已经总结了你从这里得到的东西。
手动将对象合并到一个新的静态库实例中:
ar -x libx.a
ar -x liby.a
ar -c libz.a *.o