2017-08-05 133 views
0

我有一个情况,其中有两个库lib1和lib2。 lib2对lib1有依赖性。在我的情况下,lib2基本上是lib1中函数的高级包装。 最终的应用程序将通过包含相关头文件来使用lib2中的函数。 如何静态构建库并将它们链接到最终的程序?建立依赖于另一个静态库的静态库

回答

5

静态库只是对象(.o)文件的归档,因此您不能拥有嵌入的依赖项信息。像ar cr lib1.a foo.o bar.o [more object files]就会建立你的库。

因为没有相关性的信息,你的主要程序有链接库和lib2后链接lib1lib2取决于lib1(否则连接器将无法找到尚未解决的符号是非常重要的在lib2)。因此,一个链接步骤可能看起来像这样(假设你使用gcc和你的库在当前目录):

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

+1 我认为同样的但由于在C我没有回答的经验较少。 (Y) –

+0

@rici链接器不在标准范围内。这是关于GNU链接器。如有必要,可以在调用中列出相同的库*两次*。 –

+0

对于库,可以在命令行上放置它们两次:'-l1 -l2 -l1'将处理任意方向的引用,包括相互递归。 – rici

相关问题