linux是用哪些语言写的?我们一上去了解一下吧。
Linux操作系统是用C语言、汇编语言编撰的,Linux是一种自由和开放源码的类Unix操作系统,其不同于windows的不可修改性,可以对源码进行更改,而且可以免费进行使用。
linux系统与windows系统的区别
区别1:开放性
所谓的开放性就是linux操作系统是开放源码系统,可以对其程序进行编辑更改。而谷歌的windows系统是手谷歌版权保护,就是只能谷歌内部进行开发及更改。
区别2:价钱不同
linux系统是免费使用,而谷歌开发的windows系统则是须要耗费金钱去选购。
区别3:文件格式不同
windows操作系统内核是NT,而linux是shell;另外查看linux是什么系统,windows硬碟文件格式是fat32或NTSF,而linux须要的文件格式是ext2或ext3,该操作系统还多一个SWAP格式的交换分区。
linux内核是用哪些写的
Linux常用的编译工具GCC
Linux内核是一个复杂的开源项目《深入理解linux内核》 pdf,主要的编撰语言是C语言和汇编语言,为此,深入理解Linux内核的必要条件是熟悉C语言。Linux内核是由全球顶级的程序员编撰的,其中采用了诸多精妙的C语言编撰方法,是十分值得学习的标杆。
另外,Linux内核采用GCC编译器来编译,了解和熟悉GCC编译器以及GDB调试器的使用也很有必要。
Linux内核代码已然达到2000万行,庞大的代码量会让读者在阅读和理解代码方面觉得到力不从心,那在Linux中有没有一款合适的阅读和编撰代码的工具呢?
由Linux内核创始人Linus开发的git工具早已在全球范围内被广泛应用,因而读者也必须了解和熟悉git的使用。
Linux常用的编译工具GCC。
GCC工具
GCC(GNUCompilerCollection)编译器在1987年发布了第一个C语言版本,它是用GPL许可证发行的自由软件,也是GNU计划的关键部份。GCC如今是GNULinux操作系统的默认编译器,同时也被好多自由软件采用。GCC在后续的发展过程中《深入理解linux内核》 pdf,扩充支持了好多的编程语言,如C、Java、Go等语言。另外,GCC还支持多种不同的硬件平台,如x86、ARM等体系结构。
GCC的编译流程主要分成4个步骤。
如图2.1所示,用C语言编撰test程序的源代码test.c。首先步入GCC的预处理器(cpp)进行预处理,把头文件、宏等进行展开,生成test.i文件。接出来,步入GCC的编译器,因为GCC可以支持多种编程语言,这儿调用C语言的编译器ccl。编译完成以后生成汇编程序linux命令chm,输出test.s文件。在汇编阶段,GCC调用汇编器(as)进行汇编,生成可重定位的目标程序。最后一步是链接,GCC调用链接器把所有目标文件和C语言的标准库链接成可执行的二补码文件。
图1.1GCC编译流程
由此可见,C语言代码须要经历两次编译和一次链接过程能够生成可执行的程序。
1.1.2ARMGCC
GCC具有良好的可扩充性,不仅可以编译x86体系结构的二补码程序外,还可以支持好多其他体系结构的处理器,如ARM、MIPS、RISC-V等。这儿涉及两个概念,一个是本地编译,另一个是交叉编译。
交叉工具链的命名规则通常如下。
[arch][-os][-(gnu)eabi]
许多Linux发行版提供了编译好的ARMGCC的工具链,如优麒麟Linux18.04上提供如下和ARM相关的编译器。
1.1.3GCC编译
GCC编译的通常格式:
gcc[选项]源文件[选项]目标文件
GCC的常用选项如表1.1所示。
表1.1GCC的常用选项
本文摘自《奔跑吧Linux内核入门篇》
end
喜欢的同学欢迎转发到同学圈