0%

gcc-g++-cc-CC

编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析、语法分析、语义检查和中间代码生成、代码优化、目标代码生成。

一、概念

  1. GCCGNU Compiler Collection的缩写,即GNU编译器集合,可以编译CC++Objective-CAdaFortranJava

  2. gccGCC中的GUN C Compiler,即C语言编译器。

  3. g++GCC中的GUN C++ Compiler,即C++编译器。

  4. ccUnix系统的C Compiler,一个是古老的C编译器。在Linuxcc一般是一个符号连接,指向gcc

    • 可以通过ls -l /usr/bin/cc来察看,该变量是make程序的内建变量,指向gcc
  5. CC则一般是makefile里面的一个名字标签,即宏定义,表示采用的是什么编译器,如CC=gcc

二、误区

  1. 对于*.c*.cpp文件,gcc分别当做ccpp文件编译,g++则统一当做cpp文件编译。

  2. 使用g++编译文件时,g++会自动链接标准库STL,而gcc不会。

    • 在用gcc编译cpp文件时,为了能够使用STL,需要加参数–lstdc++
  3. gcc在编译c文件时可使用的预定义宏比较少,gcc在编译cpp文件时或g++在编译c文件和cpp文件时会加入一些额外的宏。

  4. 编译可以用gcc/g++,而链接可以用g++gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。

符号链接是一种特殊类型的文件,它的内容是一个字符串。它可能指向一个存在的文件也可能什么都不指向。当在命令行或程序里提到符号链接的时候,实际上进入了它指向的文件(前提是这个文件存在)。

三、参考

  1. 参考一