linux是用什么语言写的?我们一起来了解一下吧。
Linux操作系统是用C语言、汇编语言编写的,Linux是一种自由和开放源码的类Unix操作系统,其不同于windows的不可更改性,可以对源码进行修改,并且可以免费进行使用。
linux系统与windows系统的区别
区别1:开放性
所谓的开放性就是linux操作系统是开放源码系统,可以对其程序进行编辑修改。而微软的windows系统是手微软版权保护,就是只能微软内部进行开发及修改。
区别2:价格不同
linux系统是免费使用,而微软开发的windows系统则是需要花费金钱去购买。
区别3:文件格式不同
windows 操作系统内核是NT,而linux 是shell;另外,windows 硬盘文件格式是fat32或NTSF,而linux 需要的文件格式是ext2或ext3,该操作系统还多一个SWAP格式的交换分区。
Linux常用的编译工具GCC
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个步骤。
如图2.1所示,用C语言编写test程序的源代码test.c。首先进入GCC的预处理器(cpp)进行预处理,把头文件、宏等进行展开,生成test.i文件。接下来,进入GCC的编译器,由于GCC可以支持多种编程语言,这里调用C语言的编译器ccl。编译完成之后生成汇编程序,输出test.s文件。在汇编阶段,GCC调用汇编器(as)进行汇编,生成可重定位的目标程序。最后一步是链接,GCC调用链接器把所有目标文件和C语言的标准库链接成可执行的二进制文件。
图1.1GCC编译流程
由此可见,C语言代码需要经历两次编译和一次链接过程才能生成可执行的程序。
1.1.2ARM GCCGCC具有良好的可扩展性,除了可以编译x86体系结构的二进制程序外,还可以支持很多其他体系结构的处理器,如ARM、MIPS、RISC-V等。这里涉及两个概念,一个是本地编译,另一个是交叉编译。
交叉工具链的命名规则一般如下。
[arch] [-os] [-(gnu)eabi]
许多Linux发行版提供了编译好的ARM GCC的工具链,如优麒麟Linux 18.04上提供如下和ARM相关的编译器。
GCC编译的一般格式:
gcc [选项] 源文件 [选项] 目标文件
GCC的常用选项如表1.1所示。
表1.1GCC的常用选项
本文摘自《奔跑吧 Linux内核 入门篇》
end
喜欢的朋友欢迎转发到朋友圈