GCC Basic

想学好编程C/C++应该是个避不开的,因为几乎所有重要的程序的底层都是用C/C++写的,而绝大多数的开源C/C++都是用GCC编译下 Linux 运行环境中,所以掌握 GCC 的用法是十分必要的,了解 GCC 在 Linux 下编译程序的步骤是非常有必要的。

GCC 是 GNU Compiler Collection 的缩写,这个编译器套件支持多种语言,最著名就是 C 和 C++ 了。别的一些语言像 Java 用的肯定就少了,但是它也支持,还支持 Fortan、Objcect-C、Ada 语言。除了 GCC 之外,GNU 定义一套 GNU Toolchain 来开发应用和操作系统,这些都是非常有必要去了解的,比如 Autotools 中的 Automake、Autoconf、Autohead 就在程序跨平台编译中起到重要作用,我观察在开源的项目中有不少应用到此工具。gdb(GNU Debugger)用来调试 C/C++ 程序非常有用,可以打断点、看到堆栈信息以及局部变量的值,跟在 IDE 中使用调试工具没什么两样,这样就在 print 的基础上多一个有力的工具。而 gdb 的用处还不仅仅在于此,gdb 可以看到 CoreDump 的堆栈信息,能够在程序崩溃时定位到具体的问题,我就因此受益了,前段时间我的棋牌服务器程序总是莫名宕机,通过 gdb 查看 CoreDump 文件的信息发现了是缓冲区溢出导致的。GNU Make 这个不用多说,几乎任何 Linux 下的项目都会手写或者生成一个 Makefile 文件,前面的 Automake 生成的也是 Makefile 文件。还有 GNU Binutils 包括链接(ld)、装载和汇编器这些重要工具。以及 GNU Bison 一个词法生成器,还有就是 m4 通用宏语言。

可以看出整个这一套工具围绕都是怎样编译程序最终生成一个可执行的文件,这套工具链构建了几乎整个 Linux 大厦,并且繁荣了 C/C++ 几十年之久。我很想学好 C/C++ 语言,投资这套东西绝对是有益的。

阅读全文 “GCC Basic”