<真象还原> mac 搭建bochs 踩坑

1,001 阅读1分钟

环境

  1. mac macos catalina 10.15.7
  2. bochs-2.6

安装

  1. brew install gcc
  2. brew install sdl
  3. ./configure --enable-debugger --enable-disasm --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11 --prefix=$HOME/opt/bochs
  4. make && make install

报错1

出现了 cdrom_osx.cc:194:18: error: assigning to 'char ' from incompatible type 'const ch

解决

bochs-2.6/iodev/hdimage/cdrom_osx.cc,我们打开修改第 193 行

if ((devname = strrchr(devpath, '/')) != NULL) {
改为:
if ((devname = (char *) strrchr(devpath, '/')) != NULL) {

继续 make && make install

报错2

gtk_enh_dbg_osdep.cc:19:10: fatal error: 'gtk/gtk.h' file not found
#include <gtk/gtk.h>

解决 - brew install gtk+

此时我们 需要重新 生成 makefile 文件

./configure  --enable-debugger            
            --enable-disasm              
            --enable-disasm             
            --enable-iodebug            
            --enable-x86-debugger             
            --with-x             
            --with-x11             
            --prefix=$HOME/opt/bochs`

继续 make && make install

报错3

x.cc:42:10: fatal error: 'X11/extensions/Xrandr.h' file not found
#include <X11/extensions/Xrandr.h>

安装 brew install libxrandr 继续make && make install

报错4

onfig.cc:3261:55: error: ordered comparison between pointer and zero
      ('char *' and 'int')
    if (SIM->get_param_string("model", base)->getptr()>0) {
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~

我们打开config.cc,找到3621行,修改为 修改config.cc的3621行

if (SIM->get_param_string("model", base)->getptr()>0) {
为
if (SIM->get_param_string("model", base)->getptr()>(char *)0) {

继续make && make install 通过

配置文件

文件参考书中的文件 ,记得把最后一项注释掉就可以了

参考 How to install gtk on OSX for use with g++/gcc compiler