以下内容源于网络资源的学习与整理,如有侵权请告知删除。
参考博客
一、作用
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可以在各种操作系统上使用。