为什么特定版本?
因为不同操作系统和不同软件版本的库和代码都有差异,你在这个系统上编译通过,换个不同系统(mac,redhat,centOS,Fedora等)或同一系统的不同版本都有可能因为库的差异编译不了,或者你换个bochs版本因为源码不同也一样可能编译不过去。
所以以下解决的问题有方法在其它条件下是否有用那就不一定了。
首先我试过用brew安装,但是keymap配置不起来。之前说的注释掉什么的都没有用,注释掉虚拟机就起不来,一个白屏界面,修改多次也没有用,所以打算编译安装试一下。
安装SDL2,我是直接用brew安装的。
然后手工补丁:
1.去修改cdrom_osx.cpp(低版本的叫cdrom_osx.cc),go 到194行,在strrchr(devpath, '/')前加 (char *),就是和else里一样。
2.复制 文件
cp misc/bximage.cpp misc/bximage.cc
cp iodev/hdimage/hdimage.cpp iodev/hdimage/hdimage.cc
cp iodev/hdimage/vmware3.cpp iodev/hdimage/vmware3.cc
cp iodev/hdimage/vmware4.cpp iodev/hdimage/vmware4.cc
cp iodev/hdimage/vpc-img.cpp iodev/hdimage/vpc-img.cc
cp iodev/hdimage/vbox.cpp iodev/hdimage/vbox.cc
3.使用下面的选项,没有科学性,就是去掉没法编译的选项保证能编译过去。
./configure --with-sdl2 --enable-debugger --enable-disasm --enable-all-optimizations --enable-readline --enable-long-phy-address --enable-ltdl-install --enable-plugins --enable-a20-pin --enable-x86-64 --enable-smp --enable-cpu-level=6 --enable-large-ramfile --enable-repeat-speedups --enable-fast-function-calls --enable-handlers-chaining --enable-trace-linking --enable-configurable-msrs --enable-show-ips --enable-cpp --enable-debugger-gui --enable-iodebug --enable-logging --enable-assert-checks --enable-fpu --enable-vmx=2 --enable-svm --enable-3dnow --enable-alignment-check --enable-monitor-mwait --enable-avx --enable-evex --enable-x86-debugger --enable-pci --enable-usb --enable-voodoo --prefix=/opt/bochs
4.make
5.sudo make install
这样基本能跑起来了。
配置文件:
megs:32
romimage:file=/opt/bochs//share/bochs/BIOS-bochs-latest
vgaromimage:file=/opt/bochs/share/bochs/VGABIOS-lgpl-latest
floppya:1_44=boot.img,status=inserted
boot:floppy
log:bochsout.txt
mouse:enabled=0
keyboard:keymap=/opt/bochs/share/bochs/keymaps/sdl-pc-us.map