编译过程
我们最初开始接触编程的时候或多或少的都会先使用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元式: