以下内容源于网络资源的学习与整理,如有侵权请告知删除。

参考博客

Difference Between GCC and CC Compiler - Ask Any Difference

Linux新手学堂:CC与GCC的区别概括介绍 - Prayer - C++博客

一、作用

GCC编译器与CC编译器,它们都是编译器,用于将高级语言转换成低级语言。

二、名字的含义

CC的全称为“C Compiler”,它是Unix系统用来编译C语言的编译器,只支持C语言的编译。

GCC的全称是“Gnu Compiler Collection”,是很多编译器的集合,比如C编译器、 C++编译器、Objective-C编译器、Fortran编译器和Java编译器等等。当调用gcc命令时,GCC编译器会根据文件扩展名自动识别并调用对应的编译器。

三、符号连接cc、变量CC

(1)在Linux系统中,小写的cc是一个符号链接,默认指向gcc命令,如下所示。

xjh@ubuntu:~$ ls -l /usr/bin/cc
lrwxrwxrwx 1 root root 20 十月 18  2017 /usr/bin/cc -> /etc/alternatives/cc
xjh@ubuntu:~$ ls -l /etc/alternatives/cc
lrwxrwxrwx 1 root root 12 十月 18  2017 /etc/alternatives/cc -> /usr/bin/gcc
xjh@ubuntu:~$ 

(2)大写的CC是make程序的一个内建变量(或者说“隐含变量”,见博客Makefile隐含规则),换句话说,就算在Makefile中没有定义CC=xxx,该变量也会存在,其值为cc,即默认指向gcc命令。

xjh@ubuntu:~/iot/tmp$ cat Makefile
ALL:@echo ${CC} #这里是大写的CC
xjh@ubuntu:~/iot/tmp$ make
cc              #输出是小写的cc,也就是变量CC的值是cc,即CC = cc
xjh@ubuntu:~/iot/tmp$

(3)符号链接cc与变量CC存在的意义在于源码的移植性。我们可以使用GCC编译器来编译之前用CC编译器编译的unix软件,甚至连Makefile都不要改;反过来也便于linux程序在unix下的编译。

四、 CC编译器和GCC编译器的取舍

GCC里的C语言编译器比CC强大,支持的新特性也多,没必要再使用CC。

CC只在Unix和类Unix操作系统上使用,而GCC可以在各种操作系统上使用。

GCC编译器和CC编译器的区别相关推荐

  1. AI编译器与传统编译器的联系与区别

    AI编译器与传统编译器的区别与联系 总结整理自知乎问题 针对神经网络的编译器和传统编译器的区别和联系是什么?. 文中提到的答主的知乎主页:@金雪锋.@杨军.@蓝色.@SunnyCase.@贝壳与知了. ...

  2. linaro公司:交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别

    交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别 从授权上,ARM交叉编译工具链分为免费授权版和付费授权版. 免费版目前有三大主流工具商提供,第一是G ...

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

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

  4. 【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )

    文章目录 一.protoc 编译器简介 二.下载 protoc 编译器 三.使用 protoc 编译器编译 addressbook.proto 源文件 四.参考资料 一.protoc 编译器简介 在上 ...

  5. 传统编译器和DL编译器的调研和理解

    文章目录 Part One : 传统编译器 1.1 前端 1.2 中端 常见的优化 1.3 后端 指令的选择 寄存器分配 指令重排 1.4 总结 Part Two:深度学习编译器 2.1 为什么需要 ...

  6. Linux账户标识R=400是什么意思_带你阅读linux内核源码:通俗讲解编译器、交叉编译器和大小端...

    欢迎关注"技术简说",持续分享linux内核和驱动开发干货. 本文内容包括: 编译器和交叉编译器的介绍 交叉编译器的命名规则 如何交叉编译C代码 大端.小端的通俗讲解 如何判断你的 ...

  7. linux安装方舟编译器,华为方舟编译器安装 软件源码地址,华为方舟编译器安装 软件源码地址预约 - 浏览器家园...

    华为方舟编译器下载安装 软件源码下载地址 2019华为全球开发者大会将在8月9日-11日在华为松山湖基地召开.本次开发者大会邀请了1500位合作伙伴.5000名全球开发者,将是华为历来规模最大的一次会 ...

  8. 执行引擎、解释器、编译器、JIT编译器的恩怨情仇

    学习宋红康老师的JVM课程已经有一段时间了,学习过程中发现,有些内容遗忘得很快,虽然自己也用印象笔记记录了,但是如果没有输出,知识仍然不能完全地消化.因此,决定在JVM专栏中记录和总结学过的内容,欢迎 ...

  9. 传统编译器与神经网络编译器

    传统编译器与神经网络编译器 传统编译器 以LLVM(low level virtual machine)为例,输入是高级编程语言源码,输出是机器码,由一系列模块化的编译器组件和工具链组成. LLVM通 ...

最新文章

  1. st2045 漏洞反弹root shell
  2. tensorflow神经网络结构可视化
  3. 阿里神器Arthas 3.1.2版本发布,新特性解读
  4. 为什么有的人喜欢夜间工作_为什么开发人员喜欢在夜间编码
  5. weblogic IllegalArgumentException 解决办法
  6. 7.Linux 高性能服务器编程 --- Linux 服务器程序规范
  7. Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 1.1. 不个网页title保存成个个文件的时候儿有无效字符的问题... 1
  8. SpringMVC防止表单重复提交
  9. 如何实现文件的双向自动同步备份?
  10. 京东商城选择地址信息
  11. hosts文件导致无法网页观看视频
  12. 2018年机器视觉产业技术现状、发展趋势分析及发展前景预测
  13. 微信小程序怎么开通(自己申请开通微信小程序的方法)
  14. 第五章习题——C程序设计(第四版)
  15. 拓嘉辰丰电商:拼多多新上架的新品要不要做
  16. java springboot房地产信息管理系统+实训报告+PPT+功能需求报告
  17. 三维点云到人体重建(七)
  18. pushd和popd批处理_提示以及PushD和PopD
  19. 机器学习算法——决策树4(剪枝处理)
  20. vue 项目进行直播视频 vue-video-player

热门文章

  1. 数据结构各结构特点(数组、链表、栈、队列、树)
  2. 【C语言】动手写一个哈希表
  3. 将 MATLAB 搬到虚拟机
  4. python类实例化 输入参数名字 下划线_Python 用下划线作为变量前缀和后缀指定特殊变量...
  5. java 线程耗尽_关于线程耗尽导致请求超时系统假死的思考
  6. 深度学习和神经网络的介绍(一)
  7. 做自媒体如何获得更多的流量?
  8. Linux下ln命令建立软硬链接
  9. 程序猿没有副业,太难了(个人经历不喜无视)
  10. 【RTT】SPI Flash 与文件系统(3):DFS 和 EasyFlash