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


   预编译:主要处理那些源代码文件中的以 “#” 开始的预编译指令。如 #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
  链接:主要内容就是将各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接。主要过程:地址和空间分配、符号决议和重定位。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-小蛙-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值