源文件被编译汇编成可重定位目标文件,文件包含数据区,代码区,符号表等。符号表表示源文件中变量和函数在各自区中的位置,所占大小等信息。目标文件中的符号可引用其他可重定位目标文件中的符号,在连接器解析符号的时候对这些符号进行联系。
目标文件也可以叫做模块,由函数和变量集合组成。
静态链接库里由很多模块组成,且每个模块只有一个函数组成。一个模块调用静态链接库,不会把链接库里的所有模块都链接起来,只会链接用到的目标模块,减少了最终可执行文件的内存大小符号解析过程:解析每个输入模块,把未定义的符号放入U,定义的符号放入D,如果输入模块中的符号是定义U中的符号,则把该符号放入D。最后U为空则链接成功。静态链接库是把库的函数载入嵌套在最后的可执行文件中,而动态链接库是在源程序中调用动态链接函数dlope,dlsym,dlclos,该函数来获得动态链接库里用到的函数指针。