Ubuntu 20.04 安装bochs 2.6.2

最近突然对x86架构感兴趣,在看《操作系统真象还原》这本书,里面用到了bochs,版本为bochs2.6.2,我在用的虚拟机是Ubuntu20.04,为了原汁原味,决定不用最新版的bochs,而是在Ubuntu20.04上安装bochs2.6.2,安装期间遇到并解决了一些编译相关问题,记录在此处,供参考。

  1. 下载 :
    在网站https://bochs.sourceforge.io/上下载bochs 2.6.2,对应文件为bochs-2.6.2.tar.gz。

  2. 解压 :

$ tar zxvf bochs-2.6.2.tar.gz
  1. 配置 :
./configure --prefix=/yourdir/bochs_2_6_2 --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11
  1. make
    make失败,报错信息:
	g++ -c  -I.. -I./.. -I../iodev -I./../iodev -I../instrument/stubs -I./../instrument/stubs -g -O2 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES     gtk_enh_dbg_osdep.cc -o gtk_enh_dbg_osdep.o
gtk_enh_dbg_osdep.cc:20:10: fatal error: gtk/gtk.h: 没有那个文件或目录
   20 | #include <gtk/gtk.h>
      |          ^~~~~~~~~~~
compilation terminated.

这样的报错说明需要gtk。(后来发现是gtk+2.0)

  1. 安装gtk+2.0
$ sudo apt-get update
$ sudo apt-get install gtk+-2.0

安装完毕后,重新make,仍然报同样的错误,说明需要手动配置gtk的头文件和库路径。

  1. 安装pkg-config
$ sudo apt-get install pkg-config
  1. 手动修改bochs/目录下的Makefile
    原Makefile内容如下
SHELL = /bin/bash

CC = gcc
CXX = g++
CFLAGS = -g -O2 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES  $(X_CFLAGS) $(MCH_CFLAGS) $(FLA_FLAGS)  -DBX_SHARE_PATH='"$(sharedir)"' 
CXXFLAGS = -g -O2 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES  $(X_CFLAGS) $(MCH_CFLAGS) $(FLA_FLAGS)  -DBX_SHARE_PATH='"$(sharedir)"'

LDFLAGS = 
LIBS =  -lm

修改后Makefile内容如下

SHELL = /bin/bash

# 此处添加了两个变量,分别是库相关选项和头文件相关选项,后面引用不赘述
LIBS_GTK_2_0    = $(shell pkg-config --libs gtk+-2.0) 
CFLAGS_GTK_2_0  = $(shell pkg-config --cflags gtk+-2.0)

CC = gcc
CXX = g++
CFLAGS = -g -O2 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES  $(X_CFLAGS) $(MCH_CFLAGS) $(FLA_FLAGS)  -DBX_SHARE_PATH='"$(sharedir)"' $(CFLAGS_GTK_2_0)
CXXFLAGS = -g -O2 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES  $(X_CFLAGS) $(MCH_CFLAGS) $(FLA_FLAGS)  -DBX_SHARE_PATH='"$(sharedir)"' $(CFLAGS_GTK_2_0)

LDFLAGS = 
# 此处新增了"-lpthread -lX11"两个选项,缺少这两个选项对应的编译错误不赘述
LIBS =  -lm $(LIBS_GTK_2_0) -lpthread -lX11
  1. 重新make成功

  2. 安装到指定路径,完毕

make install
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值