摘要:
在使用GCC编译程序时,其编译过程可以分为4个阶段:预处理(Pre-Processing) -> 编译(Compling) -> 汇编(Assembling) -> 连接(Linking). 程序员完全可以根据自己的需要让gcc在编译的任何一个阶段结束,检查活使用编译起在该阶段输出的信息,或者对其生成的二进制文件进行控制。 我想通过一个Hello World程序对GCC的编译过程有进一步的认识。C代码[Xredman@localhostdemo]$cattest.c#includeintmain(void){printf("HelloWorld\n");r 阅读全文
摘要:
最近看深入了解计算机系统,在开始的时候有对hello.c程序的在计算机内部的执行分析过程,于是就有了前面转载关于gcc对hello.c逐步编译的过程的帖子。现在对其补充与进一步的深入分析与讨论。计算机系统层级可以由用户到底层硬件划为以下几层:1.高级语言级:也就是大家所熟悉的C,C++,JAVA等等。2.汇编语言级:对高级语言进行预处理,编译后生成汇编语言,程序员也可以直接编写。linux下可以gcc -E hello.c -o hello.i.进行预处理,然后进行通过gcc -s hello.i -o hello.s生成汇编语言的文件。3.操作系统级:由操作系统程序实现。这些操作系统由机.. 阅读全文