我正在编写一个需要处理XML的静态库。我希望它包含开箱即用的所有必要内容,但我不知道如何使其他静态库链接到它,即 libxml2。
我将 -c
标志传递给 gcc 以生成ar
然后用于创建库的.o
。我必须通过什么魔法标志组合才能让我的静态库吞下 libxml2?
图书馆不会吞噬其他库。 我能想到的有两种解决方案可以做你想做的事。
- 与最终目标中的两个库链接,指定新的首先是图书馆。
- 复制 libxml2 库,只需使用 lib 工具以将对象添加到其中。
可悲的是,对我来说最有效的是从静态库中提取所有.o
,然后将它们包含在您的.o
中以制作单个.a
因此,您可以ar t libxml2.a
查看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