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

最佳答案

静态库只是对象(.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

08-25 08:19