.a静态库文件的内容

时间:2016-07-07 14:22:32

标签: c arm

我被分享了一个静态库文件('。''文件)。当我用7z打开它时,它包含两个文件,一个没有扩展名,一个扩展名为.o。这些文件是什么?这里的.o是一个目标文件,在链接过程中实际链接了哪个文件。

有关.a文件的更多信息: 让我们将文件命名为xyz.a: 当我解压缩它或用7z查看它时,我可以看到两个文件:   - xyz   - abc.o

1 个答案:

答案 0 :(得分:0)

'.a'文件可以包含ar实用程序添加的几个'.o'文件。它还可以包含将全局符号映射到包含它们的'.o'文件的索引。在某些系统上(主要是基于SysV或GNU),ar的{​​{1}}选项用于更新索引。在其他系统(主要是基于BSD)上,索引由单独的s实用程序更新。

要回答您的问题,“。o”文件是构成库的对象(代码)文件,另一个文件是索引,“。o”文件的某些子集将由链接器链接,在索引的帮助下,确定需要哪些“.o”文件。

使用ranlib链接器,选项ld将搜索名为-l foo的动态库或名为libfoo.so的静态库。其他libfoo.a选项控制它是查找静态库还是动态库以及查找位置。