检查依赖关系、编译生成结果代码的Make(系统自带有),
C代码编译器gcc(系统自带有)。
所以这个环境的搭建主要就差安装nasm和虚拟机了。
nasm可以用sudo apt-get install nasm很方便地安装,至于虚拟机Bochs,当然也可通过apt-get安装,只是这样的话会按默认的配置安装,《一个操作系统的实现》一书说的可能没有调试功能,所以还是决定去官网下源码来编译安装。
如果顺利的话,所有过程如下:
1、下载bochs源码,下的是2.4.5版本
2、解压源码压缩包:tar vxzf bochs-2.4.5.tar.gz
3、进入bochs的解压目录bochs-2.4.5:cd bochs-2.3.5
4、配置,使能调试和反汇编功能:./configure --enable-debugger --enable-disasm
5、编译:make
6、安装:sudo make install
我说“如果顺利的话”,说明我不顺利,原因可能是不同版本的Linux程序包有所缺少,以下是问题及解决:
问题1:./configure后出现Error: C++ preprocessor “/lib/cpp” fails sanity 。
问题在于c++编译器的相关的包没有安装,试了N多命令下载包都不行,都找不到这些package。最后装g++ gdb这个包才貌似解决了,
sudo apt-get install g++ gdb,然而。。。
问题2:执行./configure后又出现ERROR: X windows gui was selected, but X windows libraries were not found.
又是缺包,网上搜得这个包xorg-dev,于是sudo apt-get install xorg-dev(网上有说必须用sudo aptitude install xorg-dev才行,我刚好相反,用这个命令不行,先不管了,赶紧把环境搭建起来才正事,过后再研究。)。还没完呢。。。
问题3:再次执行./configure后又出现新的
ERROR: pkg-config was not found, or unable to access the gtk+-2.0 package.Install pkg-config and the gtk+ development package,or disable the gui debugger, or the wxWidgets display library (whichever is being used).
不管是缺配置还缺包,直接下包,sudo apt-get install libgtk2.0-dev。
之后再编译安装一次./configure>make>sudo make install,就一路顺风了,这样七七八八、效率低下的基本上算装好了。
PS:接下来碰到了一个非常愚蠢的问题:
执行dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc,老是提示boot.bin文件不存在,心想既然缺了,不管里面需要什么内容,先创建个空白的文件来保证虚拟光盘制作的顺利进行,但又不清楚能否像创建其他普通二进制文件那样,用例如touch之类命令来创建,对boot.bin文件不了解,于是先查了boot.bin文件的相关资料,无果,又拼命检查bochs安装时是否所哪个配置歌者依赖的包,一无所获,加上这几天有事,搁置了。
。。。。。。
等到今天,翻书翻到前面,原来boot.bin文件需要先写个asm文件再汇编出来的,哇了个去!挡住去路的,往往不是参天大树,而是小藤,还有盲目!探索阶段,尽量按步就班来,少跳着走,当然这个过程还会发现自己很多Linux环境例如Vim这编辑器还远远没熟练掌握,在写boot.asm(或者说是Copy源码到asm文件中)都还是出现问题无法汇编。。。