编译器驱动程序

编译器驱动程序负责协调整个编译过程,依次调用预处理器、编译器、汇编器和链接器。它首先通过预处理器将C源代码转化为中间文件,再由编译器生成汇编语言文件,接着汇编器将其转换为可重定位目标文件,最后链接器整合所有.o文件和系统目标文件,创建出可执行程序。在运行时,加载器会加载并执行该程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大多数编译器提供编译器驱动程序,它代表用户在需要时调用语言处理器、编译器、汇编器和构造器
驱动程序首先运行C预处理器(cpp),它将C的源程序eg.c翻译成一个ASCII码的中间文件eg.i

cpp [other arguments] eg.c eg.i

接下来,驱动程序运行C编译器(cc1),它将eg.i翻译成一个ASCII汇编语言文件eg.s

cc1 eg.i -0g [other arguments] -o eg.s

然后驱动程序运行汇编器(as),将eg.s翻译成一个可重定位目标文件eg.o

as [other arguments] -o eg.o eg.s

如果有多个.o文件,运行链接器程序ld,将eg.o以及(其他的.o文件)一些必要的系统目标文件组合起来,创建出一个可执行目标文件。

ld -o object [system object files and args]eg.o(other.o)
./object//运行编译好的可执行文件

shell调用操作系统中的一个叫做加载器(loader)的函数,将可执行文件object中的代码和数据复制到内存中,然后控制转移到这个程序头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值