构建一个依赖于另一个静态库的静态库。

11

我有一个情况,涉及到两个库 lib1 和 lib2。lib2 依赖于 lib1。在我的情况下,lib2 基本上是包含在 lib1 函数内的高级封装。 最终应用程序只需包含相关标头文件就可以使用 lib2 中的函数。 我该如何静态构建这些库并将它们链接到最终程序中?

1个回答

22

静态库只是目标文件(.o)的归档,所以您无法嵌入依赖信息。例如 ar cr lib1.a foo.o bar.o [更多目标文件] 将生成您的库。

由于没有依赖关系信息,因此您的主程序必须链接两个库,并且在lib2依赖于lib1时,链接lib1链接lib2非常重要(否则链接器将找不到在lib2中未解决的符号)。因此,链接步骤可能如下所示(假设您使用gcc,并且您的库位于当前目录中):

gcc -otest main.o -L. -Wl,-Bstatic -l2 -l1

我也有同样的想法,但由于我在C语言方面缺乏经验,所以没有回答。(Y) - Harneet Singh
@rici 链接器不在标准范围内。这是关于GNU链接器的。如果需要,您可以在调用中列出相同的库两次 - user2371524
对于库文件,可以在命令行上重复指定它们:-l1 -l2 -l1 可以处理相互递归的引用。 - rici
这就是我刚才写的,回应你现在已删除的评论。 - user2371524
4
有没有办法使 l2.lib 包含 l1.lib 中的对象?这样,当链接到 l2.lib 的父项目时,只需要链接 l2.lib 即可。 - Royi
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接