gcc 是c的编译器,g++是c++的编译器。cc一般是一个符号连接,指向gcc。 
CC一般是makefile里面的一个名字,具体是什么根据实际情况决定。 
gcc和g++都是GNU(组织)的一个编译器。

误区一:gcc只能编译c代码,g++只能编译c++代码 
两者都可以,但是请注意: 
1,后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。 
2,编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。

误区二:gcc不会定义__cplusplus宏,而g++会 
实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所述,如果后缀为.c,并且采用gcc编译器,则该宏就是未定义的,否则,就是已定义。

误区三:编译只能用gcc,链接只能用g++ 
严格来说,这句话不算错误,但是它混淆了概念,应该这样说:编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。

请问CC cc gcc g++本质区别在什么地方? 
传统上, UNIX OS 会配带 C compiler by default. 一般用符号名 cc. 而C++ compiler 需要另外买. 
常见的有: 
Linux: gcc/g++ 
Solaris: cc/CC 
HP-UX: aCC 
AIX: xlc/xlC 
SCO: ?/? 
几乎所有的情况, C/C++ compiler 都只是front end driver. 后面的编译器是一样的. 比如gcc, g++ 提供不同的选项给编译器以及link editor. 这些包括用户选项, 缺省选项, 对应的缺省系统库. 每个compiler有一个configuratoin file来指定这些缺省选项. 使用 verbose mode (-v) 可以看到这些内容. 
C++ 程序因为语法(namespace, class, overload...), 需要mangle 所有的symbol name. 与C程序link的时候需要用extern "C". 
C++的编译器肯定可以编译C的的代码,注意除了C++对C的语法扩充之外,编译和链接C和C++的标准库通常也不一样呢。我用gcc而非g++也编译了C++的程序就证明了这一点。

GCC G++ C C++的区别相关推荐

  1. 不同的编译器:GCC G++ C C++的区别

    gcc 是c的编译器,g++是c++的编译器.cc一般是一个符号连接,指向gcc.CC一般是makefile里面的一个名字,具体是什么根据实际情况决定. gcc和g++都是GNU(组织)的一个编译器. ...

  2. 【Linux】gcc/g++区别和联系

    gcc/g++是什么 gcc/g++之间的区别和联系 gcc/g++是什么 讲到gcc/g++,那就得先说一下GCC,GCC:GNU Compiler Collection(GUN 编译器集合),它可 ...

  3. cc、gcc、g++、CC的区别概括

    gcc是C编译器:g++是C++编译器:linux下cc一般是一个符号连接,指向gcc:gcc和g++都是GUN(组织)的编译器.而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Lin ...

  4. gcc g++ 支持c++11编译的标准和区别

    g++ -g -Wall -std=c++11 main.cpp gcc -g -Wall -std=c11 main.cpp 如果不想每次写这个-std=C++11这个选项该怎么办呢? 方法出处:h ...

  5. Linux下gcc/g++、make和cmake的区别

    文本程序到可执行文件生成无论在什么平台大致分为以下几个部分:  1.用编辑器编写源代码,如.c文件.  2.用编译器编译代码生成目标文件,如.o.  3.用链接器连接目标代码生成可执行文件,如.exe ...

  6. linux下g编译文件或目录,【转】在linux下使用gcc/g++编译多个.h文件

    博主写得很好 多个文件编译在linux下编译,下面有三个文件,分别是1.cpp 和 2.cpp 和myhead.h 文件. 1.cpp 2.cpp myhead.h 假如他们都在一个目录下面,那么编译 ...

  7. Linux系统编程5:入门篇之在Linux下观察C/C++程序编译过程 gcc/g++使用详解

    文章目录 (1)gcc/g++完成编译的过程 A:预处理 B:编译 C:汇编 D:链接 (2)gcc/g++选项 (3)重要概念:函数库 A:gcc/g++在哪实现了函数 B:静态库与动态库 (1)g ...

  8. 【linux系统编程】基础开发工具:gcc/g++

    Linux C/C++ 编译器 – gcc/g++ 正文开始@Assassin 目录: Linux C/C++ 编译器 -- gcc/g++ 1. gcc/g++ 基本用法: 2. C/C++编译基本 ...

  9. 【Linux】三、Linux 环境基础及开发工具使用(上篇)|开发工具|编辑器-vim使用|sudo提升权限问题|编译器 - gcc/g++使用|项目自动化构建工构建工具-make/Makefile

    目录 一.开发工具 二.Linux编辑器 - vim使用 2.1 vim 的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2. ...

最新文章

  1. 渐进式web应用程序_渐进式Web应用程序简介
  2. 为UINavigationBar添加自定义背景
  3. Java中使用Jedis连接Redis对Key进行操作的常用命令
  4. java mvc 案例_springmvc经典案例
  5. java类加载器_java底层内功 第一章,类加载器的任性
  6. 一文入门Python 3
  7. ALEIYE 2.0发布 首创RET关键事件功能
  8. python基于pip和conda配置国内安装源,提升下载安装性能
  9. Oracle 常用脚本1
  10. 梯度下降优化算法综述
  11. excel怎么将英文小写转大写
  12. C# 使用 Response 导出 Excel 单元格格式设置为文本格式
  13. polkitd进程解释
  14. Spark History Server 没有生效
  15. 切片软件 cura linux,Ubuntu系统入门教程-3D打印切片软件cura
  16. [UE4]射击产生弹孔:Spawn Decal At Location、Spawn Decal Attached
  17. Python从入门到实践第9章课后作业
  18. AI笔记: 数学基础之正交矩阵与矩阵的QR分解
  19. Failed to resolve org.junit.vintage:junit-vintage-engine:5.6.2
  20. 【BlackDuck】Black-Duck-User-Guide用户指导书

热门文章

  1. 理解WebKit和Chromium: Content API和CEF3
  2. 路由重发布之RIP和OSPF
  3. Android 游戏引擎汇总
  4. Linux进阶之进程与线程
  5. [面试专题]Vue.js 2.0 独立构建和运行时构建的区别
  6. 前端性能优化——http首部
  7. 通俗编程——白话NIO之Buffer
  8. java soap api操作和发送soap消息
  9. linux下定时执行任务方法【转】
  10. IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法