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

标签 c static-libraries static-linking unix-ar

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

最佳答案

静态库只是对象 (.o) 文件的存档,因此您不能嵌入依赖信息。类似 ar cr lib1.a foo.o bar.o [more object files] 的内容将构建您的库。

因为没有依赖信息,您的主程序必须链接两个 库并且链接lib1 之后 很重要lib2lib2 依赖于 lib1 时(否则链接器将找不到 lib2 中未解析的符号)。因此,链接步骤可能如下所示(假设您使用 gcc 并且您的库位于当前目录中):

gcc -otest main.o -L. -Wl,-Bstatic -l2 -l1

关于c - 构建依赖于另一个静态库的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521710/

相关文章:

c - 加载 NIF 库失败

c++ - 防止静态库中的模板实例化

go - 如何静态链接使用 crypto/tls 的 Go 二进制文件?

c - 使用 TCP 客户端/服务器的生产者/消费者

在 C 中将 Uint16 转换为字符串

c++ - 链接我的库时未解析的外部符号

c++ - 对 boost 库的 undefined reference

c++ - 跨编译单元的单例 : linking library vs linking objects

c - 错误 : expected ')' before

static-libraries - 如何构建静态 tar 命令