Linux系统中o和a代表什么?有何作用?

时间:2023-01-06 01:01:17

  在Linux系统中,“o”指的是目标文件,即存放目标代码的计算机文件;“a”指的是静态库文件,是指要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。接下来我们一起来看看详细的内容介绍。

  O就是object,也就是相当于Windows下编译的obj文件,俗称目标文件。

  a就是archive,也就相当于Windows的VC下编译的lib文件,俗称静态库文件;多个.a可以链接生成一个exe的可执行文件。

  .o文件是链接文件,.a静态库文件,靠.o文件生成,作为一个库外部程序提供函数,接口。生成.o文件。

  Linux中的O文件

  目标文件即存放目标代码的计算机文件,它常被称作二进制文件。目标文件包含着机器代码以及代码在运行时使用的数据,如重定位信息,如用于链接或调试的程序符号表,此外还包括其他调试信息。

  Linux下3种目标文件形式

  可执行目标文件,可重定位目标文件和共享目标文件。也有对应的称为可执行文件,目标文件,共享库,只是说法不同,指的都是同样的东西。

  可执行目标文件:包含二进制代码和数据,可以在存储器中直接执行。

  可重定位目标文件:包含二进制代码和数据,可以在编译时与其他可重定位目标文件合并起来的,创建一个可执行目标文件。

  共享目标文件:是一种特殊的可重定位目标文件,可以在加载或者运行时被动态加载到存储器并链接。

  Linux下目标文件文件格式

  由于编译后的中间文件,动态链接库和静态链接库,跟可执行文件的内容和结构相似,所以一般跟可执行文件一起采用同一种文件格式存储。

  Linux中的a文件

  a文件,是Linux系统中的静态链接库文件。

  所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。.so文件是共享库文件。动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息,仅当应用程序被装入内存开始运行时,在操作系统的管理下,才在应用程序与相应的.so之间建立链接关系。

  .a文件是多个.o文件的组合。.o文件就是对象文件,里面包含的内容就是01这样的机器可执行的指令,当程序要执行时还需要进行链接.链接就是把多个.o文件链成一个可执行文件。