什么是扩展名为 .a 的文件?

Posted

技术标签:

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

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

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

我是这样构建的:

  scons --c99

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

【问题讨论】:

What's the difference between .so, .la and .a library files? 可能重复。 【参考方案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 目标文件的集合。 如何调用它们以方便谷歌搜索? 它们被称为存档文件

以上是关于什么是扩展名为 .a 的文件?的主要内容,如果未能解决你的问题,请参考以下文章

C语言源程序的文件扩展名为

扩展名为CLASS是啥文件

扩展名为dll的文件是啥意思啊?有啥用?

Excel文件的扩展名为啥是xls

后缀就扩展名为js的文件是啥文件

高手告诉所有的文件扩展名所代表的意思!!!