商务合作:179001057@qq.com

csapp “链接”

技术2022-05-11  3


某平台价值19860元的编程课程资料免费领取【点我领取】


链接可以在编译时由静态编译器来完成,也可以在加载时和运行时由动态链接器来完成。连接器处理的文件为目标文件(为二进制文件)包含:可重定位的、可执行的、共享的三种。

 

多数编译系统提供编译驱动程序comiler driver,为用户根据需求调用语言预处理器、汇编器、和连接器。驱动程序将ASCII码源文件翻译成为可执行目标文件的过程如下:

驱动程序首先运行C预处理器cpp将c源程序翻译成一个ASCII码的中间文件(扩展名为.i),然后驱动程序运行C编译器将ASCII码的中间文件翻译成一个ASCII码汇编语言文件(.s),然后驱动程序运行汇编器(as),将汇编文件翻译成一个可重定位目标文件(relocatable object file,扩展名为.o) 最后运行连接器程序ld,将可重定位目标文件以及一些必要的系统目标文件组合起来,生成一个可执行的目标文件(executable object file),其中,为了创建可执行文件,链接器必须完成两个主要任务:1符号解析-将每个符号引用和一个符号定义联系起来2重定位-编译器和汇编器生成从地址0开始的代码和数据节。连接器把每个符号定义和一个存储器位置联系起来,并修改对这些符号的引用,实现重定位。

 

当运行该executable object file时,我们在shell中键入其名字,shell会调用os中叫做加载器loader的函数,它拷贝可执行文件中的代码码和数据到存储器,然后将控制转移到这个程序的开头。


最新回复(0)