定义在其他模块的全局变量和函数,在最终运行的绝对地址都要在最终链接的时候才确定。编译器将源代码编译成目标文件,然后链接器将目标文件链接起来形成可执行文件。
链接的主要内容就是把各个模块之间互相引用的部分都处理好。链接的过程主要包括了:地址和空间分配;符号决议和重定位这些步骤
目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程,其中可能有些符号或有些地址还没有调整。
.bss段存放的是未初始化的全局变量和局部静态变量,有些编译器会将全觉得未初始化变量存放在目标文件.bss段,有的则不存放,只是预留一个未定义的全局变量符号,等到最终链接的时候再在.bss段分配空间,编译单元内部可见的静态变量的确是存放在.bss段中的
.data段保存初始化了的全局静态变量和局部静态变量