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等多种语言,而且gc...
首先在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都集中在了一个软件中,形成一个语言开发项目的平台,即集成开发环境。
软件开发的周期:分析问题、源程序的编辑、预处理、编译、链接、调试、运行的顺序。编译和链接过程中出现问题,则返回到编辑步骤重新对源程序进行检查,修改代码。调试过程中出现了问题,则说明对问题本身的分析就出现了问题(如需求等),算法错误,需要重新对问题进行分析,修正算法。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)