Posted on 2007-05-08 07:32
天衣有缝 阅读(2201)
评论(0) 编辑 收藏 引用 所属分类:
os stuff
第0课:环境需求
声明:转载请保留:
译者:http://www.cppblog.com/jinglexy
原作者:xiaoming.mo at skelix dot org
MSN & Email: jinglexy at yahoo dot com dot cn
GCC
Skelix 使用c语言编写,当然也用了汇编语言(at&t风格),在linux下使用gcc编译。
[root@root ~]$ gcc -v
Reading specs
from /usr/lib/gcc/i386-redhat-linux/3.4.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-java-awt=gtk --host=i386-redhat-linux
Thread model: posix
gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
在每篇教程中都给出了源程序和软盘映象文件,你可以直接使用它们。如果你需要编译这些源程序,编译环境必须正确。我们推荐的环境是linux2.6.x内核,gcc3.x编译器。
由于在源程序中使用了__asm__, __attribute__, __extention__,以及gcc内嵌汇编,还有unsigned long long(直到C99才开始支持);如果你使用了其他编译器,需要修改对应的源程序。且编译器必须是32位,这样做的目的是保持源程序简洁清晰。
对于windows用户可以使用 cygwin,它提供了windows下的linux环境。不过我没有尝试使用它,因为我的电脑上没有安装windows操作系统。也可以在你的windows系统上安装一个虚拟机上的linux,如果你的电脑足够快的话。
VMWARE
为了运行教程中的范例,一个虚拟机必不可少,virtual pc2007已经可以免费使用了,在M$的官方网站上可以找到下载。当然也可以使用qemu和bochs之类的虚拟机。推荐的虚拟机是VMWARE。
Things Are Good To Know
如果能看懂Makefile最好了,这是*nix程序员必须掌握的一项基本知识。另外,如果你熟悉内存地址映射,中断,异常,GDT,LDT,IDT,分页机制,范围端口就更好了。当然不懂也没关系,Intel的三卷手册是案头必备:http://www.intel.com
IA-32 Intel Architecture Software Developer's Manual
Volume1: Basic Architecture
IA-32 Intel Architecture Software Developer's Manual Volume2A: Instruction Set Reference: A-M
IA-32 Intel Architecture Software Developer's
Manual Volume2B: Instruction Set Reference: N-Z
IA-32 Intel Architecture Software
Developer's Manual Volume3A:
System Programming Guide Part1
IA-32 Intel Architecture Software Developer's Manual Volume3B: System
Programming Guide Part2
读者对这些东西不必紧张,我在教程中会解释相关的知识。c语言和汇编是最基本的要求,能够很清楚的了解什么是堆和栈。关于c语言的数据成千上万,但是保护模式方面的书籍比哈雷慧星还少,据说每76年可以买到一本,如果你足够幸运的话:)
风格约定
原文中的格式被擅自去掉了,翻译后的风格应该可以一看就懂。