注:本文档为《从0学x86操作系统》课程配套的学习文档,提供相应的辅助学习资料和答疑勘误。 有关该课程的信息,请点击这里访问:https://study.163.com/provider/1017884735/index.htm 在阅读本文档时,如有疑问和建议,欢迎在下方留言或者直接联系我。

与在电脑上开发应用程序不同,要进行操作系统的开发,需要使用特殊的工具链配置,而不能直接使用集成开发环境(如visual studio)中的现成配置。因为这些配置面向的是创建针对特定操作系统下的应用而设置,而非面向创建操作系统本身。
因此,我在为了完成x86上操作系统的开发时,综合比较了多种工具,最终选择以下方案。这也是我目前所知的性价比较折衷的方案。(如有更好的方案,欢迎告诉我,或在下方留言!)

GCC编译器

image.png
选用的是GCC工具链,包含GCC编译器、GDB调试器和Binutils等工具。之所以使用该工具链是因为其非常成熟、参考资料很多。开发过程中遇到的很多问题可以顺利通过网络搜索找到相应的解决方法。

注:很多介绍开发操作系统的资料中提到了使用NASM汇编器来处理汇编文件。我没有这样做,而是选用了GCC中配套的as汇编器。其与GCC配合度较高,且在后续开发过程中必须要使用到as汇编的语法;因此直接使用as汇编器,没必要再另外学习nasm工具的使用。

CMake

用于管理程序的构建过程,其功能类似于visual studio的工程管理,或者如Makefile。
本课程使用该工具,因为开发工具Visual Studio Code对其支持较好,且建立的工程能无需修改就能迁移到不同的操作系统平台。

Visual Studio Code

image.png
GCC工具链提供的都是命令行的工具,使用起来非常不方便,所以最好是能在图形化的窗口中完成整个开发过程。我在花费了大量的时间进行尝试之后,使用了Visual Studio Code。以下的其它几种工具均被否定。

  • clion:能支持连接x86模拟器,但是调试手段不好用,且收费。
  • Visual Studio C++:需要安装支持GCC和GDB的插件,比较好用的是Visual GDB,不过要收费。另外一种工具是WinGDB,没尝试过,不知道好不好用。
  • eclipse:功能比较强,配置也简单。不过对于课程工程的管理似乎有些问题。我在使用Eclipse创建的工程,迁移时发现有些配置会丢。另外,同一工程难以做到在不同平台下能不缝迁移使用。

当然,Visual Studio Code的优点是插件比较多,对GCC的支持也较好,缺点是要写工程配置文件,略麻烦。不过一旦写好后,就可以顺利完成后续的开发工具。

qemu模拟器

image.png
用于模拟一台电脑,课程中选用的是qemu,因为其免费、易于使用,并且能与GDB连接,从而在Visual Studio Code中提供图形化的调试界面。
如果你有兴趣,也可以安装Virtual Box或者Vmware,提供更加真实和流畅的运行体验(但不能连接GDB调试)。

其它工具

开发过程中还会用到一些特定操作系统上的工具,比如磁盘挂载工具、二进制的文件查看与编辑、分区管理工具等。这些会在特定平台的文档中给出。