Linux中.c文件到可执行文件的坎坷历程

本文介绍了Linux中将.c源文件转换为可执行文件的四个阶段:预处理、编译、汇编和链接。通过预处理阶段处理#指令,加载头文件,宏替换等。并以hello.c为例,引导读者理解这一过程。
摘要由CSDN通过智能技术生成

      简单来说,我们从源文件到可执行文件要经历四大阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。在Linux中,程序员可以根据自己的需要让GCC在编译的任何阶段结束,并生成相应的文件

此处以hello.c作为例子


<span style="font-size:24px;">#include<stdio.h>
int main()
{
    printf("hello world!");

    return 0;
}</span>


1.预处理阶段:对以#开头的语句进行处理,且不进行语法的检查

  预处理阶段主要完成的三个功能:

 ①加载头文件--Linux系统中的头文件在 /user/include/stdio。

<span style="font-size:24px;">#include<stdio.h> //把头文件stdio.h中的内容加载到hello.c中的首部</span>

②宏替换

<span style="font-size:24px;">   #define N 10</span>
③条件处理--#ifdef,#else,#endif  

<span style="font-size:24px;">   #include<stdio.h>
   #define N 10

   int main()
  {
       #ifdef N
       printf("hello world!");
       #else
       printf("welcome to you!");
       #endif

       return 0;
}</span>
2.编译阶段:对程序进行语法分析,词法分析,语义分析

<span style="font-size:24px;">    gcc -S hello.i -o hello.s //生成.o文件</span>
3.汇编阶段:把汇编程序翻译成CPU可识别识别的二进制文件,该文件又称为目标文件

<span style="font-size:24px;">    gcc -c hello.s -o hello.o //生成.s文件</span>
4.链接阶段:把程序中所有木匾文件和所需要库文件都链接在一起,最终生成一个可以直接运行的文件,称为可执行文件。

<span style="font-size:24px;">  gcc hello.o -o hello   //生成可执行文件</span>
<span style="font-size:24px;">  ./hello      // 执行该文件</span>

小编初来乍到很多方面都写的不好,推荐下列博文哦,希望能帮到大家(*^__^*) 嘻嘻……点击打开链接http://www.cnblogs.com/Goldworm/archive/2012/05/21/2511910.html

   




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值