Object file
Relocatable object file
Executable object file
Shared object file: A special type of relocatable object file
现在的类unix系统主要使用的object file 类型为ELF(Unix Executable and Linkable Format)。
此文件类型中,头文件的主要section是这样的:
需要注意的主要是.text,.data,.bss三个段。其中,在c语言obj文件的链接过程中,Linker仅仅关心全局变量,局部变量交给程序运行时的stack进行管理。
还需注意的部分是
Local linker symbol != Local program symbol
可以说二者有本质上的区别。
在对于各个symbol所占的section判断时,是不是可以简单的看做:
Local program symbol不在.symtab中,Global symbol需要区分是不是extern,是不是初始化的。初始化的符号存在于.data段中,未初始化的存在于.bss段中。
P.S. .bss可以方便的记忆为 best save space ( ̄ー ̄)
另外c中的static关键字可以理解为是该文件对外部将此变量设置的封装,即所谓的访问权限(public,private......神马的),一个c文件可以看作一个单独的模块。
To be continued......
Static linkingObject fileRelocatable object fileExecutable object fileShared object file: A special type of relocatable object file现在的类unix系统主要使用的object file 类型为ELF(Unix Executable and Linkable