gcc与g++编译器

        首先在Linux(RHEL7.0)上安装gcc:yum install gcc gcc-c++ -y   其中gcc-c++是为了能够编译c++源代码,即g++。

        gcc为Linux C/C++下重要的编译环境,是GUN项目中符合ANSIC标准的编译系统, gcc可以编译C、C++、Objective-C、Java、Fortran、Pascal等多种语言,而且gcc还是一个交叉平台编译器(跨平台)。

        gcc是一组编译工具的总称,其软件包里包含众多的工具:C编译器(cclplus等)、C++编译器(c++、g++、cclplus等)、源码预处理程序(cpp、cpp0)、库文件(libgcc.a、libgcc_eh.a、libgcc_s.so、libiberty.a、libstdc++.[a,so]、libsupc++.a)。

        具体的编译过程分为4个阶段:预处理、编译、汇编和链接。可以根据自己的需要让gcc在编译的任何阶段结束,以便检查或使用gcc在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。gcc编译环境还提供了灵活而又强大的代码优化功能。

        gcc通过文件的后缀名来区别输入文件的类别: .c  C语言源代码文件    .C /.cc /.cxx/.cpp C++源代码文件    .m Objective-C源代码文件        .i 经预处理过的C源代码文件      .ii 经预处理过的C++源代码文件      .s 汇编语言源代码文件(汇编语言)       .S 经过预处理的汇编语言源代码文件(汇编语言)        .a 由目标文件构成的档案库文件(机器语言,二进制文件)        .h 头文件       .o/.obj 目标文件(机器语言,二进制文件)        其实任意一种高级语言在计算机上的执行过程如下: 首先进行预处理(处理各种宏定义等);接下来,高级语言(如C++、python等)在高级语言机器(虚拟机器)上被编译程序翻译为汇编语言程序;然后,汇编语言程序在汇编语言机器(虚拟机器)上被汇编程序翻译为机器语言程序(目标代码); 接着,机器语言程序在操作系统机器上解释操作系统;然后,机器语言程序在机器语言机器上被解释为一个个微程序;最后,这些微程序的每一条微指令在微指令系统上直接执行。综上,大概经历以下过程:预处理、编译、汇编、链接,最终成为一个可执行的二进制文件。

        /usr/lib:存放了一些头文件与库文件。    /usr/include:这个目录及其子目录下包含程序所需要的头文件。 一般库文件放在/lib   /usr/lib和/usr/local/lib中,而头文件放在/usr/include中。       /usr/bin/g++和/usr/bin/gcc:编译程序,即实际在命令行中所执行的程序

        c源程序(以.c为扩展名的文本文件),预处理(include包含、宏定义等),编译成汇编语言,汇编器将汇编语言进行汇编形成目标文件(目标语言,以.o或.obj为扩展名的文件),目标文件在与c语言的函数库进行链接形成最终的可执行文件。

        对于某些集成开发环境,如VC和VS等,它们把预处理器(预处理程序)、编译器(编译程序)、汇编器(汇编程序,gcc、g++等)、链接器(链接程序)、某些语言头文件、某些语言库文件(标准输入、标准输出等,如printf函数和scanf函数)和系统调用接口、socket都集中在了一个软件中,形成一个语言开发项目的平台,即集成开发环境。

        软件开发的周期:分析问题、源程序的编辑、预处理、编译、链接、调试、运行的顺序。编译和链接过程中出现问题,则返回到编辑步骤重新对源程序进行检查,修改代码。调试过程中出现了问题,则说明对问题本身的分析就出现了问题(如需求等),算法错误,需要重新对问题进行分析,修正算法。

 

 

你可能感兴趣的:(C/C++,C/C++)