BOCHS是一个对X86硬件进行模拟的虚拟机, 使用它可以对操作系统进行模拟硬件调试。 从而可以加深理解炒作系统的设计和工作原理。
Google之,发现都是介绍在Ubuntu上面安装的方法。 由于手头没有 Ubuntu的系统, 只有一个 CentOS 6.0(32位)的版本,于是尝试:
yum list *bochs*, 失败,什么都没有。看来用yum是不能解决问题了。而且yum安装的方式不能启用 bochs的调试功能。那就源码安装吧。
bochs2.5的版本编译安装比较简单(只需要gtk2和libx11库即可),,而低版本则安装比较麻烦。
1.bochs-2.5.1 源码编译安装。
#tar xzvf bochs-2.5.1.tar.gz#cd bochs-2.4.6#./configure –enable-debugger –enable-disasm –with-x11
编译得到的Makefile中有点问题,缺少pthread库支持,手工加上: #vi Makefile 然后在92行修改: LIBS = -lm -lgtk-x11-2.0 – … 前加上-lpthread, 如下: LIBS = -lpthread -lm -lgtk-x11-2.0 – …
#make#sudo make install
成功!
2) 遇到的问题及解决:
(i) X window library 未找到!
#sudo yum install libX11-devel
(2) gtk 2 未找到
#sudo yum install gtk2-devel
—————————分割线—————————
2.bochs-2.3.7 源码编译安装
0) 编译之前先安装如下的库: gtk2,libXt,libXpm
#sudo yum install gtk2 gtk2-devel #sudo yum install libXt libXt-devel #sudo yum install libXpm libXpm-devel
1)然后编译安装:
#tar xzvf bochs-2.3.7.tar.gz#cd bochs-2.3.7#./configure –enable-debugger –enable-disasm#make#sudo make install
其中报错误:”map”类型错误。解决的办法是修改: bx_debug/symbols.cc。 定位到 97行“using namespace std;” 下面,加入如下内容:
#ifdef __GNUC__ //修改 using namespace __gnu_cxx; //修改 #endif //修改
结果如下:
93 #elif BX_HAVE_SET_H94 #include <set.h>95 #endif96 97 using namespace std;98 99 #ifdef __GNUC__ //修改100 using namespace __gnu_cxx; //修改101 #endif //修改102 103 104 struct symbol_entry_t105 {106 symbol_entry_t (Bit32u _start = 0, char* _name = 0)107 {108 start = _start;109 name = _name;110 }111 112 char* name;113 Bit32u start;114 };
2) 重复1)的步骤,即可编译通过。运行,一切OK。
融入银河,就安谧地和明月为伴照亮长天;没入草莽,