首先在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都集中在了一个软件中,形成一个语言开发项目的平台,即集成开发环境。

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

gcc与g++编译器相关推荐

  1. msys2安装gcc、g++编译器

    更换清华源 https://mirrors.tuna.tsinghua.edu.cn/help/msys2/ 1.pacman基本命令 pacman -Sy 更新软件包数据 pacman -Syu 更 ...

  2. linux下如何升级gcc和g++编译器

    1. sudo yum -y intall epel-release 2. sudo yum install centos-release-scl-rh centos-release-scl 3. s ...

  3. gcc编译器与g++编译器的区别

    gcc与g++编译器的程序文件分别为:/usr/bin/g++和/usr/bin/gcc. gcc 和 GCC 是两个不同的东西,GCC:GNU Compiler Collection(GUN 编译器 ...

  4. 【Linux】gcc和g++的区别

    gcc和g++编译器的区别 gcc 现在是 gnu 提供的一些编译器工具的集合(Gnu Compiler Collection),以前是gnu 组织提供的 c 编译器(Gnu C Compiler). ...

  5. g++ linux 编译开栈_linux gcc和g++版本的修改

    ##编译的时候容易遇到:unsupported GNU version! gcc versions later than 6 are not supported这样的错误.所以我们要更改系统的gcc和 ...

  6. 更改Ubuntu gcc、g++默认编译器版本

    更改Ubuntu gcc.g++默认编译器版本 转一篇文章: 升级Ubuntu到11.10,但在编译Android的时候出错了.这个Android在升级系统之前编译是没有错误的,对比发现升级到Ubun ...

  7. gcc/g++编译器的优化

    gcc/g++编译器的优化 gcc提供了从O0-O3以及Os这几种不同的优化级别供大家选择 O0是编译器默认的设置 (1).-O1:它主要对代码的分支,常量以及表达式等进行优化 (2).-O2:尝试更 ...

  8. 嵌入式Linux系统编程学习之五gcc/g++编译器

    文章目录 前言 一.gcc/g++编译过程 二.静态库和动态库 三.gcc警告和优化选项 1.gcc警告 2.gcc优化选项 前言   对于.c格式的C文件,可以采用gcc或g++编译,对于.cc.. ...

  9. g 最新编译器linux,Linux下安装gcc 、g++ 、gfortran编译器

    一.ubuntu下gcc/g++/gfortran的安装 1.安装 (1).gcc ubuntu下自带gcc编译器.可以通过"gcc -v"命令来查看是否安装. (2).g++ 安 ...

最新文章

  1. 后台开发必读书籍--大话数据结构
  2. JavaScript网站设计实践(五)编写photos.html页面,实现点击缩略图显示大图的效果...
  3. 宝塔需在php设置中安装redis扩展,wordpress开启Redis扩展教程
  4. jzoj 6302. 提高组
  5. eclipse搜索关键字
  6. UI交互设计关键词:情感化设计与心理
  7. 2-4MySQL数据库安装与初始化
  8. [转载] java简易爬虫Crawler
  9. python批量音频转格式_GitHub - shede333/SWConvertVideoToAudio: Python批量转换 视频 为 音频MP3(即提取音频文件)...
  10. 家有小女---徐子熙
  11. XSS跨站脚本攻击和预防措施
  12. Road_slam论文阅读及理解
  13. STM32---定时器的ETR功能
  14. 华为路由器:清除配置
  15. 用cout输出uchar(unsigned char)变量时,没有输出结果怎么办?
  16. Hadoop3.3.4最新版本安装分布式集群部署
  17. 由乌龟画一个正方形所想到的
  18. uni-app中props的Avoid mutating a prop的报错
  19. 实现阿里云OSS文件上传
  20. 实体类多层嵌套 遍历_多层嵌套的json数据

热门文章

  1. 为什么要使用反射机制
  2. php如何清理网站缓存,php怎么清除opcache缓存
  3. saas物资管理界面设计_大型物流企业都在用的SaaS系统,看大规模运配网络如何实现精细化管理?...
  4. 导出mysql excel数据字典_mysql导出 Excel数据字典(全)
  5. 允许使用抽象类类型 isearchboxinfo 的对象_Java学习5-设计模式+抽象类/方法
  6. linux idea 快捷键,Linux 下 IDEA 的 Ctrl+Alt+S
  7. cesium绘制网格_Cesium学习笔记-工具篇37-风场绘制
  8. 洛谷P1014 [NOIP1999 普及组] Cantor 表
  9. 160 - 1 Acid burn
  10. 后台系统可扩展性学习笔记(十二)NoSQL