gcc
1. 简介
gcc(GNU C Compiler)是一款性能强大、性能优越的多平台编译器。
它支持可以编译的语言:C、C++、Java等等。而且gcc已经从当初只支持c语言编译的工具,逐渐成为支持市面上绝大多数语言编译的编译器。
可以说,如今的gcc已经是多平台、多语言的编译器,总的来说使用gcc编译无处不在,尤其在学习Linux中,安装其他软件也是需要gcc的编译支持,例如:VMWare tools。
简单来说,gcc就是将我们提前写好的代码(C、C++、Java等)文件,编译成为可执行的文件,已被我们方便使用。
2. gcc编译详解
案例源文件a.c代码如下:
#include <stdio.h>
int main(void){
printf("Hello Word!!!\n");
return 0;
}
gcc的编译过程分为四个阶段:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。
- 预编译
调用源代码文件(.c、.cpp)进行预处理,生成以.i为后缀的预处理文件,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。
gcc -E a.c -o a.i
gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。
以上命令的作用就是,对a.c源文件进行预处理编译,并将预处理结果保存到文件a.i文件中。
- 编译
将预编译处理后生成的文件进行编译,生成以.s为后缀的汇编源文件。
gcc -S a.i -o a.s
gcc的-S选项,表示在程序编译期间,在生成汇编代码后,停止,-o输出汇编代码文件。
这样我们可以推断出,将预编译文件(a.i)进行编译处理,然后将生成结果保存在编译文件(a.s)中。
- 汇编
简单来说,就是调用编译文件a.s进行汇编,生成以.o为后缀的目标文件。
gcc -c a.s -o a.o
通过为 gcc 指令的 -c 选项(注意是小写字母 c),即可让 gcc编译器将指定文件加工至汇编阶段,并生成相应的目标文件。
以上代码以及参数的作用,就是将编译文件a.s进行汇编操作,并将处理结果保存在目标文件(a.o)中。
- 链接
连接是负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。附加的目标文件包括静态连接库和动态连接库。
gcc a.o -o a
通过以上指令内容,我们可以推断出以上指令的作用就是,将目标文件(a.o)链接生成可执行文件a。
- gcc执行操作流程流程:
3. gcc直接生成可执行文件
4. 搭建webServer并用C搭建web网页
1)把http.tar.gz拷贝到Linux环境中:
2)解压压缩包:
3)进入解压后的目录,终端敲make编译代码:
6)环境测试
a)必须root用户先启动web服务:
b)查看web服务器所在机器的ip:
c)打开能平同web服务器(192.168.31.143)机器的浏览器,网址输入192.168.31.143:
5. gcc操作案例演示
gcc使用和使用C语言搭建webServer
视频链接:https://www.bilibili.com/video/BV1Hy4y1m7MU