编译器驱动程序

大多数编译器提供编译器驱动程序,它代表用户在需要时调用语言处理器、编译器、汇编器和构造器
驱动程序首先运行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中的代码和数据复制到内存中,然后控制转移到这个程序头。

猜你喜欢

转载自blog.csdn.net/linzetao233/article/details/81211089