一、前言
我编译bochs的目的是为了启用gdb调试功能。bochs提供的调试器功能较简单,开发过程中还是gdb更趁手。本文记录的方法是我一点点尝试出来的,参考了网上一些零碎资料。整个过程虽然简单但是整体比较凌乱,特别是需要对bochs的官方源码包做好几处修改。目前不太想再花时间优化过程,能编译出来就好。如果有同好有更简单的方法,有劳和我分享一下吧。
我的环境:osx 10.9,bochs 2.6.2、使用x11作为界面库。
二、安装X11
下载XQuartz安装包,并安装。
三、配置编译环境
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
export CPP=/usr/bin/cpp
export LD=/usr/bin/g++
export CFLAGS=-I/usr/X11/include
export PREFIX=/Users/boxcounter/opt/bochs-gdb
根据我的试验,使用brew安装的gcc编译会报错,使用系统自带的就可以正常编译,所以调整了CC等环境变量。PREFIX宏请根据需要自行修改。
四、编译bochs
-
下载源码包并解压,解压出来的目录名称之为“$bochs”。
-
修改.conf.macosx
根据需要修改configure的参数,比如以下是我使用的:./configure --enable-disasm \ --disable-docbook \ --enable-x86-64 \ --enable-pci \ --enable-all-optimizations \ --enable-plugins \ --enable-cdrom \ --enable-a20-pin \ --enable-fpu \ --enable-alignment-check \ --enable-large-ramfile \ --enable-readline \ --enable-iodebug \ --enable-xpm \ --enable-show-ips \ --enable-logging \ --enable-usb \ --enable-ne2000 \ --enable-cpu-level=6 \ --enable-sb16 \ --enable-clgd54xx \ --with-term \ --enable-ne2000 \ --with-x11 \ --enable-idle-hack \ --enable-gdb-stub \ --prefix=${PREFIX} \ ${CONFIGURE_ARGS}
-
chmod u+x ./.conf.macosx && ./.conf.macosx
-
修改ldtl相关选项
- 将$bochs/config.h中的“BX_HAVE_LTDL”宏的定义由1改为0,只有一处。
- 将$bochs/Makefile中的“-lltdl”改为“ltdl.o”,有多处。
-
调整gui模块的编译选项
将$bochs/gui/Makefile中的“X_LIBS = -lXpm -lXrandr”修改为“X_LIBS = -L/usr/X11/lib -lXpm -lXrandr”
如果不进行此项修改,在gui目录下进行链接的时候总会报错,提示无法找到Xmp库。使用LDFLAGS环境变量或者修改.conf.macosx中的LDFLAGS都没有用,因为gui模块链接过程中并没有使用到它们。 -
make && make install
五、参考资料
六、版本记录
- v1.0 - 2013-11-05,初始发布。
本文的pdf版:osx下搭建操作系统开发环境之构建bochs_v1.0.pdf