我正在编写一个需要处理XML的静态库。我希望它包含开箱即用的所有内容,但我不知道如何使其他静态库链接到它,即libxml2。
我将-c
标志传递给gcc以生成.o
ar
然后用来创建lib。我必须传递什么魔法标志组合才能让我的静态lib吞下libxml2?
答案 0 :(得分:4)
库不只是吞下其他库。有两种解决方案可以做你想要的,我能想到的。
答案 1 :(得分:1)
可悲的是,对我来说最有效的方法是从静态库中提取所有.o
,然后将其与.o
一起包含在一个.a
因此,您可以使用libxml2.a
来查看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
A simple explanation使用最广泛的ar
命令,虽然我可能总结了你从这里获得的内容。
答案 2 :(得分:0)
手动将对象合并到一个新的静态库实例中:
ar -x libx.a
ar -x liby.a
ar -c libz.a *.o