| « Previous | TOP | » Next |
======
工欲善其事,必先利其器!
想要做一个操作系统,好用的工具必不可少,下面介绍所需要工具。
0. 选择一个好的开发环境
一个好地开发环境非常重要,到底是Windows还是Linux或者Mac,是这个主要看个人爱好,下面提点建议:
1) 如果你没有特别的喜好,建议用linux:开发起来最自由,而且免费的开发工具比较齐备,用起来最顺手。
2) 如果你习惯Emacs(主要是快捷键),有条件(有Mac)的话建议用Mac OS X:OS X内核是NetBSD的,所以linux的工具基本都能用,并且Mac系统里面很多快捷键和Emacs里一样,如Ctrl+A, Ctrl+E, 删除Ctrl+D(VIM里这个是向下翻半页)…
3) 不建议使用Windows:因为如果用Windows,你还得装Cygwin或者mingw,把windows配置成“半个” linux 才能开发操作系统。
1. 交叉编译器—— i386-elf-gcc
你不可能在一台“裸机”上进行开发,所以你需要在自己的机器(host)上写你的操作系统,然后让编译器将源代码编译成目标机器(guest)上运行的代码。这样的“跨平台”编译则需要交叉编译器(Cross Compiler)的支持,GCC就是一个非常好的交叉编译器!
选定了GCC之后,我们还需要选择具体GCC的目标架构!例如如果我们希望我们地操作系统运行在ARM CPU上和运行在Intel 386架构上的GCC版本是不一样的(因为CPU所支持的指令集不一样)。
我们这里就选用比较常用的架构── i386,具体需要的编译器有:
1) i386-elf-ld: GNU i386-ELF连接器,将多个目标文件链接成一个二进制文件用。
2) nasm (Netwide Assmebler, 汇编编译器): 在写操作系统的时候,有些代码是无法用C来完成地,这时候我们就需要用到汇编。
3) i386-elf-gcc (里面包括 i386-elf-binutils): GCC 交叉编译器,如果你想用C来写操作系统的话就需要这个。
4) 可选:i386-elf-gdb : 可以不装GDB,bochs虚拟机里自带了汇编级别的调试器。
其中 ELF 是 Excutable and Linkable Format 的意思,即我们编译出来的多个目标文件是可以被连接器LD链接在一起成为一个二进制文件的。
在Mac下,这些可以通过MacPorts直接安装,linux下也可以通过apt-get等来安装。
2. 虚拟机——Bochs
虚拟机软件有很多,不过我个人觉得作为开发操作系统而用的虚拟机的话 Bochs 是最好的。 Bochs 内置了调试器(Debugger)可以用于调试我们的操作系统内核,不过默认情况下是没有编译进去的,我们需要在我们编译 Bochs 的时候指定参数 ” –enable-debugger” 来启用内置的调试器。
Bochs 官网是: http://bochs.sourceforge.net/ 我们可以在官网下载最新的bochs tarball 或者从它的CVS中下载最新的源码。
还有一个比较适合开发操作系统的虚拟机是:Qemu ! 它可以支持 GDB stub:通过 socket 将虚拟机里的内核二进制程序和本机里的symbol file联系起来进行调试,下载地址是:http://www.qemu.org ,Mac下的用户可以直接在 http://www.kju-app.org/ 下载到Q的dmg文件。
3. 集成开发环境——IDE
可以选择任意一个你喜欢的编辑器——Emacs、VIM …
4. Ready!
有了上面这些东西再加上很多咖啡或浓茶基本上开发操作系统所需要的工具就完备了,随时可以动手开发我们自己的操作系统了!
最后,还需要提醒一点,在我们的Makefile中,CFLAGS里一定要加上:” -nostdlib -nostartfiles -nodefaultlibs “,也就是gcc在编译的时候不增加任何标准库和其他额外信息,因为我们要写的是操作系统,所有这些标准库都应该是我们提供的,我们的新操作系统里没有自带这些东西,一切从零做起!
========
| « Previous | TOP | » Next |

May 16th, 2010 12:20 AM
跟着高手学习一下,谢谢博主写这么好的教程