Centos 6.0 源码 编译 安装 bochs

BOCHS是一个对X86硬件进行模拟的虚拟机,使用它可以对操作系统进行模拟硬件调试。

从而可以加深理解炒作系统的设计和工作原理。

google之,发现都是介绍在ubuntu上面安装的方法。

由于手头没有ubuntu的系统,只有一个CentOS6.0(32位)的版本,于是尝试:

yumlist*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)Xwindowlibrary未找到!

#sudoyuminstalllibX11-devel

(2)gtk2未找到

#sudoyuminstallgtk2-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行“usingnamespacestd;”下面,加入如下内容:

#ifdef__GNUC__//修改

usingnamespace__gnu_cxx;//修改

#endif//修改

结果如下:

93 #elif BX_HAVE_SET_H
 94 #include <set.h>
 95 #endif
 96 
 97 using namespace std;
 98 
 99 #ifdef __GNUC__ //修改
100 using namespace __gnu_cxx; //修改
101 #endif //修改
102 
103 
104 struct symbol_entry_t
105 {
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。