在配置boch时候总是出现如下错误:
symbols.cc:143: 错误: ISOC++ 不允许声明无类型的‘hash_map’
symbols.cc:143: 错误: expected ‘;’ before ‘<’token
symbols.cc:151: 错误: expected constructor, destructor, or typeconversion before ‘<’ token
symbols.cc: In constructor ‘context_t::context_t(Bit32u)’:
symbols.cc:158: 错误: ‘map’在此作用域中尚未声明
symbols.cc: In static member function ‘static context_t*context_t::get_context(Bit32u)’:
symbols.cc:180: 错误: ‘map’在此作用域中尚未声明
make[1]: *** [symbols.o] 错误 1
make[1]:正在离开目录 `/home/baichaogang/Down/bochs-2.3.7/bx_debug'
make: *** [bx_debug/libdebug.a] 错误 2
最后终于找到了解决方案
一、准备工作
bochs是由C++编写的,我们要安装相应的编译环境
sudo apt-get install build-essential

如果要图形界面,
sudo apt-get install xorg-dev

安装bison,
sudo apt-get install bison
到bochs官方网站下载源码包bochs-2.3.7.tar.gz
解压产生文件夹bochs-2.3.7,生成目录/home/ubuntu/Desktop/bochs-2.3.7

二、configure
在目录/home/ubuntu/Desktop/bochs-2.3.7/下执行
./configure --with-x11 --enable-debugger --enable-disasm--enable-pci --enable-pcidev --enable-plugins --enable-ne2000--enable-pnic --enable-docbook=no
configure后的选项作为参考,你可以用./configure--help查看全部选项,bochs官方网站上有详细说明。

三、make
在运行make之前需要修改一个文件
第一个文件是/home/ubuntu/Desktop/bochs-2.3.7/bx_debug/symbols.cc
在97行之后加入代码如下,
using namespace std;

#ifdef __GNUC__ //修改
using namespace __gnu_cxx; //修改
#endif //修改

struct symbol_entry_t
附symbols修改.cc


文件修改完毕,在目录/home/ubuntu/Desktop/bochs-2.3.7/下执行
sudo make

四、make install
在目录/home/ubuntu/Desktop/bochs-2.3.7/下执行
sudo make install

安装完bochs后接下来就可以运行bochs了:

与windows下bochsrc.bxrc不同的是linux下bochs使用bochsrc文件(无后缀)
修改/home/ubuntu/PYOS/Bochsgg/a/目录下的bochsrc,(/home/ubuntu/PYOS/Bochsgg/a/是我的img镜像文件及bochsrc文件在的目录):
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest

vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
...
在当前目录下输入命令bochs,你的程序可以运行了。