⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preparing-tools_2.htm

📁 编写自己的操作系统
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0060)http://www.huihoo.com/gnu_linux/own_os/preparing-tools_2.htm -->
<HTML><HEAD><TITLE></TITLE><!-- saved from url=(0073)http://pagoda-ooos.51.net/os_book/preparing-tools_and_environment_0_2.htm -->
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY><SPAN 
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN 
lang=EN-US><FONT face="Times New Roman" size=6><SPAN 
style="mso-tab-count: 1"><STRONG>0.2 Tools &amp; 
Environment</STRONG></SPAN></FONT></SPAN></SPAN> 
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN 
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN 
lang=EN-US><FONT face="Times New Roman" size=6><SPAN 
style="mso-tab-count: 1"><STRONG></STRONG></SPAN></FONT></SPAN><SPAN 
lang=EN-US><FONT face="Times New Roman" size=5><SPAN 
style="mso-tab-count: 1"><FONT 
size=3></FONT></SPAN></FONT></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN 
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN 
lang=EN-US><FONT face="Times New Roman" size=5><SPAN 
style="mso-tab-count: 1"><FONT size=3>[</FONT><A 
href="index.htm" 
tppabs="http://pagoda-ooos.51.net/os_book/index.htm"><FONT 
size=3>Home</FONT></A><FONT size=3>]&nbsp; [</FONT><A 
href="preparing.htm" 
tppabs="http://pagoda-ooos.51.net/os_book/preparing.htm"><FONT 
size=3>Top</FONT></A><FONT size=3>]&nbsp;&nbsp;[<A 
href="preparing-goal_1.htm" 
tppabs="http://pagoda-ooos.51.net/os_book/prepare/preparing-goal_1.htm">Previous</A><FONT 
size=3>] </FONT></FONT><FONT size=3>&nbsp;[</FONT><FONT size=3><A 
href="preparing-lang_3.htm" 
tppabs="http://pagoda-ooos.51.net/os_book/prepare/preparing-lang_3.htm">Next</A></FONT><FONT 
size=3>]</FONT></P>
<P><STRONG>
<P>
<HR width="100%" SIZE=2>

<P></P></STRONG></SPAN></FONT></SPAN>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
face="Times New Roman TUR" size=5>0.2.1 Overview</FONT></STRONG></SPAN><FONT 
face="Times New Roman">&nbsp;</FONT></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><FONT 
face="Times New Roman"></FONT>&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><FONT 
face="Times New Roman">在开发面向基于IBM 
PC平台的OS之前,你需要准备相应的工具和环境。或许你并不需要太精通它们,但你必须了解和能够使用它们。</FONT></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><FONT 
face="Times New Roman"></FONT>&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><FONT 
face="Times New Roman">这些工具和环境既包括硬件平台,又包括软件环境,既包括编译和调试工具,又包括一些模拟工具。它们是如此的繁杂,以至于没有固定的组合。这里所给出的只是一种建议。你可以使用任何你所能得到的环境和工具,只要它们有助于你的目标的完成。</FONT></P>
<P><FONT face="Times New Roman"><STRONG>
<HR width="100%" SIZE=2>

<P></P></STRONG>
<P></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><FONT 
face="Times New Roman TUR" 
size=5><STRONG>0.2.2&nbsp;Environment</STRONG></FONT></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;在你准备为你的OS编码之前,至少在你打算测试运行你的OS之前,你需要首先搭建相应的环境。它们主要分为硬件环境和软件环境。</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><FONT 
size=4><STRONG></STRONG></FONT>&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><FONT 
size=4><STRONG>0.2.2.1 Hardware Environment</STRONG></FONT></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4></FONT></STRONG>&nbsp;</P><FONT size=3>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;我们的目标是开发基于IBM 
PC平台的OS,硬件环境,当然,指的当然是IBM PC及其兼容机。是的,你需要至少一台标记有Intel Inside或者安装有兼容CPU的IBM 
PC及其兼容机。如果你的OS是基于Protected Mode的,那么你的PC至少要是80286,如果你想完全发挥Protected 
Mode的特点,那么找一台80386及其更高系列的PC会是比较明智的选择。当然,如果只是想开发一个基于Real 
Mode的OS,并且完全不需要任何Protected 
Mode的特性,那么8086/8088就足够了。但就目前的情况来说,拥有一台PIII以上的PC并不是一件非常困难的事情。</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">这台PC除了拥有必备的显示器,键盘,硬盘等外设之外,最好能够有一个软盘驱动器,因为这有利于你在真实的环境下测试你的OS。</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">当然,如果你没有PC,或者你并不想在PC平台上开发,你也可以找一个能够在运行在你的平台之上的模拟器(Simulator),但你必须能够保证你的编译器能够编译出PC平台的指令。</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4>0.2.2.2 Software Environment</FONT></STRONG></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">这里所说的Software 
Environment指的主要是OS环境,它可以有很多选择,但我的建议是最好你能够安装一套Linux发布版本(Linux Distribution),比如Red 
Hat或Slackware。</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">首先,Linux是免费的(对于发布版本来说,会收取少量的费用,但少的足以负担的起),并且很稳定(即使这样,我仍然鼓励定期做备份);其次Linux 
Distributions已经自带了许多方便于OS开发的开发调试环境和工具;另外,Linux上还有自身的所有源码,以及许多开发文档,这些对于你的OS的设计和开发很有参考价值。</P>
<P><FONT face="Times New Roman"><STRONG>
<HR width="100%" SIZE=2>

<P></P></STRONG>
<P></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><FONT 
face="Times New Roman TUR" size=5><STRONG>0.2.3 Tools</STRONG></FONT></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;在搭建了相应硬件和软件环境之后,我们需要准备和安装相应的工具软件。</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4>0.2.3.1 GCC</FONT></STRONG></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4></FONT></STRONG>&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">GCC是GNU组织的旗舰产品,由GNU创始人Richard 
Stallman首创。GCC过去的全称为GNU C Compiler,但后来GCC发展为C,C++,Object 
C等编译器的集成体,所以后来GCC的全称改为GNU&nbsp;Compiler 
Collection。当前版本为2.8.1,但据说与2.7.*有兼容性问题,而当前使用较广的是gcc 2.7.2。几乎所有的(actually, I'm not 
sure:) )Linux Distribution都自带GCC,你可以使用</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
gcc -version</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">来查看你的Linux上所安装的gcc的版本。</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">GCC的不断发展完善让许多商业编译器相形见绌。没有任何一个商业编译器像GCC一样有高度的可移植性——GCC已经被移植到几乎所有的常见平台,其中硬件平台包括x86, 
ia64, alpha, hppa, m68k, Power PC,mips, IBM rs6000, 
sparc/sparc64,而操作系统平台则包括从Win32/DOS,到各种Unix。</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">GCC对ANSI 
C进行了有效的扩展,它们使得C语言的功能更加强大。使用这些扩展,可以更加方便自然的开发OS。</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3">&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4>0.2.3.2 Binutils</FONT></STRONG></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4></FONT></STRONG>&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4>0.2.3.3 Make</FONT></STRONG></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4></FONT></STRONG>&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4>0.2.3.4 CVS</FONT></STRONG></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4></FONT></STRONG>&nbsp;</P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4>0.2.3.5 Bochs</FONT></STRONG></P>
<P class=MsoNormal 
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT 
size=4></FONT></STRONG>&nbsp;</P></FONT></FONT></FONT></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -