3.1 GCC与GDB
为了让计算机执行程序,首先需要将程序编译成CPU可执行的指令。什么是编译?编译就是将高级语言翻译成汇编语言或者机器语言的过程,通俗地说就是把程序员编写的代码翻译成计算机能够理解的语言。计算机只认识0和1组成的二进制指令,因此程序员编写的C语言代码、C++ 代码、Go语言代码等,计算机根本无法识别,只有将程序中的每条语句翻译成对应的二进制指令,计算机才能执行。任何应用程序的开发都离不开编译器和调试器。在Linux操作系统中进行C语言开发,可依靠一套优秀的编译和调试工具,也就是GCC和GDB。
GCC是GNU Compiler Collection的缩写,是一套由自由软件基金会(Free Software Foundation,FSF)开发的编程工具,用于编译和链接程序。GNU是GNU's Not UNIX(GNU不是UNIX)的递归缩写,它由自由软件基金会支持和管理。从诞生起,GCC历经了上百个版本的迭代,一直在改进,截至2023年,GCC已经发展到了12.2版本。作为一款十分受欢迎的编译器,GCC被移植到许多不同的硬件/软件平台上,几乎所有的Linux发行版也都默认支持GCC。
GDB是The GNU Project Debugger的缩写,是Linux操作系统下功能全面的调试工具。它支持断点、单步执行、输出变量、观察变量、查看寄存器、查看堆栈等调试手段。在Linux操作系统的软件开发中,GDB是主要的调试工具,用来调试C语言程序和C++程序。
当然还有很多很好的编译器,比如Clang编译器。相比于GCC,Clang编译器具有更快的编译速度、更小的内存占用、更简单的设计和可读性更高的诊断信息等优点。截至2022年底,信创平台支持的Clang编译器最高版本为8.0.1。当前信创平台下的Clang编译器还在不断完善中。