【问题标题】:What is a file with extension .a?什么是扩展名为 .a 的文件?
【发布时间】:2011-08-23 08:06:20
【问题描述】:

我下载了这个:https://github.com/mongodb/mongo-c-driver

现在我正尝试在我的 C 程序中使用它,但我不知道如何处理生成的 .a 文件。这些是什么?我找不到任何信息,甚至在 GCC 手册中也找不到。

我是这样构建的:

  scons --c99

另外,我可以在我的 C89 程序中使用 C99 库吗?

【问题讨论】:

标签: c gcc shared-libraries


【解决方案1】:

.a 文件是使用ar 实用程序创建的,它们是库。要将其与gcc 一起使用,请将所有.a files 收集到lib/ 文件夹中,然后与-L lib/-l<name of specific library> 链接。

将所有 .a 文件收集到 lib/ 是可选的。恕我直言,这样做可以使目录更好看,代码和库很好地分离。

【讨论】:

  • “库名”究竟是什么,.a 文件的名称或包含 .a 文件的文件夹的名称,或其他?
  • 我都试过了,都是返回错误。
【解决方案2】:

.a 文件是static 库,通常由archive tool 生成。您通常包含与该静态库关联的头文件,然后在编译时链接到该库。

【讨论】:

  • 我认为 .so 文件是库文件。那我需要同时使用吗?
  • @Blub:有静态库和共享库。在 Linux 中,.a 是静态库(归档),而 .so 是共享库(共享对象)。
  • 您可以使用ar tv foo.a查看.a静态库的内容。它通常是.o 目标文件的集合。
  • 如何调用它们以方便谷歌搜索?
  • 它们被称为存档文件
猜你喜欢
  • 2015-03-04
  • 2010-09-08
  • 1970-01-01
  • 2018-09-23
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-26
  • 2012-01-03
相关资源
最近更新 更多