在大学里面大家都用过VC6.0来进行编程VC6.0属于集成开发环境,一份代码从文本变成可执行的程序只需要在其中点击几个按钮就行了加之老师也只教过我们如何操作,并未介紹Clinux怎么C语言编程的执行过程上一篇曾提到过,Linux下的开发环境没有集成需要一个一个操作。这固然不如VC6.0方便但学会如何使用gcc编译器工具后,可以使我们加深对Clinux怎么C语言编程执行过程的理解这是非常重要的。
gcc编译C程序的主要过程包括:预编译(Preprocessing)——编译(Compilation)——汇编(Assembly)——连接(Linking/Build) 四个过程每个过程都分别进行不同的处理,下面假设已经写好了一个文件:hello.c并以此为例仔细介绍。
该过程会对各种預处理指令(以#开头的代码行如#include,#define#ifdef等等)进行处理,删除注释和多余的空白字符
对命令的解释:E是参数,是通知gcc对hello.c进行预编译; o是參数是对命令输出结果进行导入操作,这里是将gcc -E hello.c操作结果输出到文件hello.i(这里文件名可以自定义)进行保存
注:Linux对大小写敏感,此处必須为大写E
该过程会对代码进行语法、语义分析和错误判断,生成汇编代码文件
对命令的解释:S是参数,用于通知gcc对目标文件hello.i进行编译
该过程会将汇编代码转化为计算机可识别的二进制文件。
对命令的解释:c是参数用于通知gcc对木匾文件hello.s进行指令转换操作。
该过程就是將多个******.o文件合并成一个可执行文件(也就是二进制指令)类似windows下的.exe文件。
对命令的解释:hello就是我们最后能够直接运行的可执行文件
注:可以通过命令“objdump -d hello”将该可执行文件hello转变为汇编linux怎么C语言编程;也可以通过readelf来读该文件内容。
直接双击输出的可执行文件hello无效需要通过命令行来使它运行。
其实并不需要这么多步操作,只需要对最开始的文本文档hello.c执行命令“gcc hello.c -o hello”即可生成计算机可执行文件hello,然后执行命囹“./hello”即可运行命令之所以有这么多步,只是方便我们对Clinux怎么C语言编程的编译过程有个更深刻的了解