程序员的自我修养——编译和链接

来源:互联网 发布:25颗摇头矩阵灯厂家 编辑:程序博客网 时间:2024/06/06 02:52


   预编译:主要处理那些源代码文件中的以 “#” 开始的预编译指令。如 #include、#pragma、#define。

$ gcc -E client.cpp -o client.i 或 $ cpp client.cpp > client.i

  编译:整个程序构建的核心部分,也是最复杂的部分。把预处理完的文件进行一系列词法分析、语法分析、语义分析及优化后生成相应的汇编文件。

$ gcc -S client.i -o client.S   c++中对应为cc1plus

  汇编:将汇编代码转换为可执行的指令。

$ gcc -c client.s -o client.o
  链接:主要内容就是将各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接。主要过程:地址和空间分配、符号决议和重定位。

       重定位就是地址修正的过程,就是给程序中每个绝对地址引用的位置打补丁,使他们指向正确的地址。
 

0 0
原创粉丝点击