我有一个情况,涉及到两个库 lib1 和 lib2。lib2 依赖于 lib1。在我的情况下,lib2 基本上是包含在 lib1 函数内的高级封装。 最终应用程序只需包含相关标头文件就可以使用 lib2 中的函数。 我该如何静态构建这些库并将它们链接到最终程序中?
我有一个情况,涉及到两个库 lib1 和 lib2。lib2 依赖于 lib1。在我的情况下,lib2 基本上是包含在 lib1 函数内的高级封装。 最终应用程序只需包含相关标头文件就可以使用 lib2 中的函数。 我该如何静态构建这些库并将它们链接到最终程序中?
静态库只是目标文件(.o
)的归档,所以您无法嵌入依赖信息。例如 ar cr lib1.a foo.o bar.o [更多目标文件]
将生成您的库。
由于没有依赖关系信息,因此您的主程序必须链接两个库,并且在lib2
依赖于lib1
时,链接lib1
后链接lib2
非常重要(否则链接器将找不到在lib2
中未解决的符号)。因此,链接步骤可能如下所示(假设您使用gcc
,并且您的库位于当前目录中):
gcc -otest main.o -L. -Wl,-Bstatic -l2 -l1
-l1 -l2 -l1
可以处理相互递归的引用。 - ricil2.lib
包含l1.lib
中的对象?这样,当链接到l2.lib
的父项目时,只需要链接l2.lib
即可。 - Royi