我有一个例子,有两个库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