编译过程

       我们最初开始接触编程的时候或多或少的都会先使用IDE,这也使得我们很少接触到编译这块内容。

一、练习体验

      既然是因为IDE限制了我们去了解编译这块内容,那么我们何不先去尝试一下不使用IDE来编译运行程序呢?

  那就开始吧!编译一个简单的hello world!程序(C)

  1 打开一个txt文件,在里面敲上hello world 程序

    

#include <stdio.h>
int main()
{
printf("Hello World!");
getchar();
return 1;
}

      保存文档为Code.c,这么源程序的文本文件有了。  

  2 要开始使用一个编译器来对这段代码进行编译,编译器有很多,这里就只是使用一下VS里面的cl编译器。cl.exe是微软的C/C++编译器与链接器的32位工具,通过编译和链接产生可执行文件。这个cl.exe在哪里呢?一般藏在VS安装根目录下的VC文件夹下的Bin文件夹中..\Microsoft Visual Studio 10.0\VC\bin

         首先打开命令行,定位到cl.exe文件所在文件夹,然后执行cl.exe,这时会显示cl.exe的一些版本信息并提示使用方法,就如上面所提到的:

      

   其中可以对其进行一些参数的设置,具体参数可以上MS官网搜索。

     

     之后按照提示输入正确的参数:

     运行时出现一个小问题,原因是要使用cl.exe之前需先运行vcvars32.bat批处理文件,

     之后再次运行命令行,这时在cl.exe所在的文件夹下生成了Code.obj链接文件Code.obj文件,并在F盘中找到了相应的Code.exe可执行文件,运行可执行文件。运行该可执行文件,运行结果如下:

     

修改一下源程序Code.c,修改之后如下:

    

#include <stdio.h>

int Add(int a, int b);

int main()

{

printf("Hello World!");

printf("1+2=:%d",Add(1,2));

getchar();

return 1;

}

其中Add函数在Function.c中定义:

int Add(int a, int b)

{

    return a+b;

}

此时再次编译改程序,出现错误,程序未能运行成功,原因是找不到Add函数,此时就要用到链接程序Link.exe和nmake.exe了。先将Function.c编译成obj文件:

      

之后再用链接程序将这两个obj文件链接起来,执行下面的命令行:

     

此时在F盘已经生成了CodeFunction.exe可执行文件,运行如下:

    

   nmake的作用是把编译和链接两步合并起来,编译和连接同时进行。Microsoft 程序维护实用工具 (NMAKE.EXE) 是一个 32 位,基于说明文件中包含的命令生成项目的工具。NMake具有丰富的选项,可以完成复杂编译操作。它可以辨别源代码的改动,并选择性的编译,为你节省大量不必要的编译时间。

  3 上面讲得啰嗦了些,还有其他IDE未演示,如Dev-cpp和经典的Win-TC。我会将过程整理成文档,供大家下载。点击这里下载

二、基础知识

  1 编译过程:

    

  2 词法分析:

  3 语法分析:

  4 语义分析:

  5 N元式:

posted @ 2011-12-27 12:08  xanthodont  阅读(529)  评论(0编辑  收藏  举报