我们平时写的c代码,就是以.c为后缀的文件,就叫源文件,要经过编译链接之后才能成为可执行的exe文件。我们来看看是怎么进行的呢。
笔者用的两款IDE,一个叫Dev C++,一个是vs2015,我们来看看他们是怎么实现编译链接的。
Dev C++:
这个IDE用的编译器是GCC,ok,我们来看一下他的安装路径,
可以看到在这个目录里有gcc的exe程序,Dev C++就是通过这个东西来编译的。我们可以配置一下环境变量,直接通过gcc命令来编译我们的源文件。
之所以要配置环境变量,是因为我们当我们配置了环境变量后,就可以在cmd中直接使用这个目录下的程序了,环境变量的作用就是当在cmd中输入一些命令后,先去你的这个目录中寻找。
接下来,我们创建一个源文件,在其位置按住shift右击,打开powershell窗口,这样我们就不用切换位置了;然后输入gcc x.c
会发现在这个目录里生成了一个exe文件,输入路径就可以运行了
其实这个IDE在生成exe的过程中还有一个过程,他会先将源文件编译成目标文件(以.obj结尾的文件),在经过链接从而生成exe文件,只不过它在这个过程中把obj文件删除了。gcc这个命令包含了编译和链接。
来看看vs:vs用的编译器叫cl,如图
我们也可以像上面一样配置环境变量,但是vs这个强大的IDE为我们提供了强大的手动编译的工具,不需要我们在配置了
我们先把位置调到我们要测试的地方
输入cl x.c
这个命令包含了编译和链接,我们也可以分开来进行。
先用cl /c a.c
再用link
vs的底层也是先编译在链接的。
但这两个工具的编译器是不一样的。
下面我们在来说个事,我们知道在源文件中会有预处理文件,那这个东西到底是怎么用的呢,下面我们来干一件事,一切就明了了。
右击stdio.h打开文档,把里面的代码copy到#include<stdio.h>的位置上
运行,你会发现和没替换之前是一样的。
ok,我们来总结一下,在我们点击开始执行时,编译器首先会先把你的预处理用他的.h文件替换,然后开始编译了,生成一个obj的文件,这个东西就是计算机可以看懂的文件了,之后在将这个obj文件和其他一些文件链接起来,比如启动文件(不同的系统启动文件不一样),依赖的一些库文件等,生成可执行文件.exe
以上是笔者经实践得出个结论,如果有什么错误请指出来,感激不尽!!!