繁体   English   中英

使用许多其他 static 库链接 static 库

[英]Linking against a static lib using many other static libs

我生成了一个 static 库,我们称它为 MyLib.a。 这个 static 库使用了许多其他 static 库,例如 Lib1.a Lib2.a... 当我想在应用程序中使用我的 static 库 MyLib.a 时,我必须链接到其他库 Lib1.a 和 Lib2.a 并包含它们.h 文件,否则我的应用程序无法编译或构建。 我是否需要在编译时包含这些库,或者在生成我的 static 库时我是否遗漏了一些东西?

我是否需要在编译时包含这些库,或者在生成我的 static 库时我是否遗漏了一些东西?

如果我正确理解你的问题:编译时你只需要提供.h 文件路径(例如使用-Igcc编译命令)。 编译时不使用任何 object 或库文件。

创建static.a库文件时,只需要将编译产生的.o文件包含在static库中即可。

链接时,您需要提供 output 二进制文件所需的库(和 plain.o 文件)。

现在,如果您使用一个命令同时进行编译和链接(因此 intermediate.o 文件等由编译器处理),那么您需要为该单个命令提供所有内容。

Static 库只是 object 个文件的存档(如 java 的 jar),您可以使用ar实用程序将多个 static 文件提取并组合到一个存档中。

ar -x lib1.a
ar -x lib2.a
ar -x mylib.a

ar c all_libs.a  *.o

之后你只需要链接一个库all_libs.a

我发现的唯一“解决方案”是直接将相关项目中的 cpp/h 文件包含在该项目的子文件夹中。 它们都将隐式链接到您的库中。

当然,如果其他人将该库作为依赖项,则会出现代码冗余。

干杯约翰

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM