我被分享了一个静态库文件('。''文件)。当我用7z打开它时,它包含两个文件,一个没有扩展名,一个扩展名为.o。这些文件是什么?这里的.o是一个目标文件,在链接过程中实际链接了哪个文件。
有关.a文件的更多信息: 让我们将文件命名为xyz.a: 当我解压缩它或用7z查看它时,我可以看到两个文件: - xyz - abc.o
答案 0 :(得分:0)
'.a'文件可以包含ar
实用程序添加的几个'.o'文件。它还可以包含将全局符号映射到包含它们的'.o'文件的索引。在某些系统上(主要是基于SysV或GNU),ar
的{{1}}选项用于更新索引。在其他系统(主要是基于BSD)上,索引由单独的s
实用程序更新。
要回答您的问题,“。o”文件是构成库的对象(代码)文件,另一个文件是索引,“。o”文件的某些子集将由链接器链接,在索引的帮助下,确定需要哪些“.o”文件。
使用ranlib
链接器,选项ld
将搜索名为-l foo
的动态库或名为libfoo.so
的静态库。其他libfoo.a
选项控制它是查找静态库还是动态库以及查找位置。