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

Tri*_*uah 4 c static-libraries unix-ar static-linking

我有一个案例,其中有两个库lib1和lib2.lib2依赖于lib1.在我的例子中,lib2基本上是围绕lib1内部函数的高级包装器.最终的应用程序只是通过包含相关的头来使用lib2中的函数.如何静态构建库并将它们链接到最终程序?

小智 9

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

因为没有相关性的信息,你的主要程序有链接库,它是重要的链接lib1 lib2,当lib2取决于lib1(否则,链接器不会发现,在未解决的符号lib2).因此,链接步骤可能如下所示(假设您使用gcc并且您的库位于当前目录中):

gcc -otest main.o -L. -Wl,-Bstatic -l2 -l1
Run Code Online (Sandbox Code Playgroud)

  • 没有办法让“l2.lib”也包含“l1.lib”对象吗?那么当链接到`l2.lib`的父项目时,只有`l2.lib`会被链接? (4认同)