一、
典型的目标文件分为以下3种形式:
1、可重定位目标文件:这种文件包含二进制代码和数据,这些代码和数据已经转换成了机器指令代码和数据。但是这种可重定位的目标文件还不可以直接执行,原因是这些指令和数据中往往引用其他模块(目标文件)中的符号。这些其他模块的符号对于本模块来说是未知的。这些符号的解析需要链接器将所有的模块进行链接。这种操作成为“重定位”,因此这种目标文件成为“可重定位的目标文件”的后缀名通常是.o。
2、可执行目标文件:这种文件同样包含二进制代码和数据。所不同的是,这种文件已经经过了链接操作,和所有的模块(目标文件)都产生了联系。链接器将所有需要的可重定位目标文件链接成为一个可执行目标文件。这时,每个目标文件中引用其他目标文件中的符号都已经得到了解析和重定位。因此每个符号都是已知的了,该文件可以被机器直接执行。
3、共享目标文件:这是一种特殊类型的可定位目标文件,可以在需要它的程序运行或者加载时,动态地加载到内存中运行。这种文件的后缀名通常是.so。共享目标文件又称为“动态库”文件或者“共享库”文件。
二、
目标文件分为可执行目标文件,可重定位目标文件和共享目标文件。
也有对应的成为可执行文件,目标文件,共享库。但是只是说法不同,指的都是同样的东西。《Linux就该这么学》有Linux命令大全,基本上可以查询到如下介绍
目标文件有三种类型:
1. 可重定位文件(Relocatable File):包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。 (Linux的*.o 文件 Windows的 *.obj文件)