0
我被共享了一个静态库文件('.a'文件)。当我用7z打开它时,它包含两个文件,一个没有扩展名,一个扩展名为.o。这些文件是什么? .o是一个目标文件,它在链接过程中实际链接了这些文件中的哪一个。静态库文件的内容
对某文件更多信息: 让我们命名该文件xyz.a: 当我未压缩或用7z格式查看它,我可以看到两个文件: - XYZ - abc.o
我被共享了一个静态库文件('.a'文件)。当我用7z打开它时,它包含两个文件,一个没有扩展名,一个扩展名为.o。这些文件是什么? .o是一个目标文件,它在链接过程中实际链接了这些文件中的哪一个。静态库文件的内容
对某文件更多信息: 让我们命名该文件xyz.a: 当我未压缩或用7z格式查看它,我可以看到两个文件: - XYZ - abc.o
'.a'文件可以包含由ar
实用程序添加的几个'.o'文件。它还可以包含将全局符号映射到包含它们的'.o'文件的索引。在某些系统上(主要是基于SysV或GNU的),ar
的s
选项用于更新索引。在其他系统上(大多数基于BSD),该索引由一个单独的ranlib
实用程序更新。
为了回答你的问题,'.o'文件是组成库的对象(代码)文件,另一个文件是索引,'.o'文件的一些子集将由链接器,在索引的帮助下确定需要哪些'.o'文件。
对于ld
链接器,选项-l foo
将搜索名为libfoo.so
的动态库或称为libfoo.a
的静态库。其他ld
选项控制它是否查找静态或动态库以及在哪里查找它。
当你用'ar(1)'('ar x file.a')提取时你有相同的文件吗?你用'file(1)'来获得关于这个文件的更多信息吗? – blatinox