Linux内核是一个复杂的开源项目,主要的编写语言是C语言和汇编语言,因此,深入理解Linux内核的必要条件是熟悉C语言。Linux内核是由全球顶尖的程序员编写的,其中采用了众多精妙的C语言编写技巧,是非常值得学习的典范。
另外,Linux内核采用GCC编译器来编译,了解和熟悉GCC编译器以及GDB调试器的使用也很有必要。
Linux内核代码已经达到2000万行,庞大的代码量会让读者在阅读和理解代码方面感觉到力不从心,那在Linux中有没有一款合适的阅读和编写代码的工具呢?
由Linux内核创始人Linus开发的git工具已经在全球范围内被广泛应用,因此读者也必须了解和熟悉git的使用。
Linux常用的编译工具GCC。
GCC工具
GCC(GNU Compiler Collection)编译器在1987年发布了第一个C语言版本,它是用GPL许可证发行的自由软件,也是GNU计划的关键部分。GCC现在是GNU Linux操作系统的默认编译器,同时也被很多自由软件采用。GCC在后续的发展过程中,扩展支持了很多的编程语言,如C++、Java、Go等语言。另外,GCC还支持多种不同的硬件平台,如x86、ARM等体系结构。
GCC的编译流程主要分成4个步骤。
- 预处理(Pre-Process)
- 编译(Compile)
- 汇编(Assemble)
- 链接(Link)
如图2.1所示,用C语言编写test程序的源代码test.c。首先进入GCC的预处理器(cpp)进行预处理,把头文件、宏等进行展开,生成test.i文件。接下来,进入GCC的编译器,由于G