更新于:2019.7.2

在阅读《一个64位操作系统的设计与实现》过程中,搭建实验环境遇到的诸多困难。

本人的实验环境:vmware15.0 下安装有kali-liunx虚拟机里进行的安装实验,如果有小伙伴对这款操作系统感兴趣

kail操作系统镜像:

链接:https://pan.baidu.com/s/1jkYI2RQ_lcgCPaENMQwEYg
提取码:94s9

=====================     正文   ======================

1、安装bochs

下载各个版本的bochs:传送门0            bochs的用户使用手册:传送门1              有关configure选项的含义:传送门2

在kail linux操作系统下,我选择bochs-2.6.9.tar.gz,为了实现调试功能我们必须自己下载源码编译。

或者您也可以使用SVN checkout命令获取自2000年3月以来任何版本的Bochs源代码。命令是:

svn co http://svn.code.sf.net/p/bochs/code/tags/tagname/bochs bochs

下载解压:

tar -xvf bochs-2.6.9.tar.gz

在含有comfigure文件的目录下打开命令行输入回车:

./configure --with-x11 --with-wx --enable-plugins --enable-debugger --enable-debugger-gui --enable-readline --enable-disasm --enable-xpm --enable-show-ips --enable-logging --enable-assert-checks --enable-idle-hack --enable-cpu-level=6 --enable-fpu --enable-x86-64 --enable-vmx=2 --enable-svm --enable-avx --enable-x86-debugger --enable-alignment-check --enable-configurable-msrs --enable-long-phy-address --enable-a20-pin --enable-large-ramfile --enable-repeat-speedups --enable-fast-function-calls --enable-handlers-chaining --enable-all-optimizations --enable-pci --enable-iodebug --enable-usb 

根据文档中相关参数的具体含义,根据该文档我更改了一些参数:

去除掉了:--enable-cpp --enable-smp --enable-3dnow --enable-monitor-mwait --enable-voodoo --enable-ltdl-install --enable-trace-linking --enable-evex

请自己查一下官方文档!!!

等待结束后,输入命令:

make

2、不得不说一下make命令:

我们先要配置好configure文件用于生成makefile文件。然后,make。如果你安装失败需要重新make,建议先运行:make all-clean,最后make install

3、此处根据个人编译环境不同可能报错如下:

<1> 出现

1“ERROR: X windows gui was selected, but X windows libraries were not found.

解决办法:

sudo apt-get install libx11-dev xserver-xorg-dev xorg-dev

<2> 出现

1 “ERROR: pkg-config was not found, or unable to access the gtk+-2.0 package. Install pkg-config and the gtk+
development package, or disable the gui debugger, or the wxWidgets display library (whichever is being used).”
2 ERROR: pkg-config was not found, or unable to access the gtk+-2.0 package.Install pkg-config and the gtk+
development package,or disable the gui debugger, or the wxWidgets display library (whichever is being used)

解决办法:

sudo apt-get install libgtk2.0-dev

<3> 出现

 1 checking for C compiler default output file name… configure: error: C compiler cannot create executables

解决⽅法:

sudo apt-get install libc6-dev

<4> 出现

1 configure: error: C++ preprocessor "/lib/cpp" fails sanity check

解决⽅法

sudo apt-get install build-essential

<5> 出现

 1 X windows gui was selected, but X windows libraries were not found.

解决⽅法:

sudo apt-get install xorg-dev

⼤家在解决完⼀项之后再次输⼊:./configure .......

等待完成输入:

make

<6>如果提⽰:

/usr/bin/ld: gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbol pthread_create@@GLIBC_2.1
//lib/i386-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line collect2: error:ld
returned 1 exit statusmake: *** [bochs]

解决⽅法:
在⽂件管理器的搜索栏⾥搜索:makefile
会搜出很多名叫“makefile”的⽂件,找到⼤⼩为29kb的那个“makefile”,注意,有的图标上会带着⼀个锁,
有的没有,我们找不带锁的那个,打开后下拉到90⾏左右,内容为:

LIBS = -lm -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype

在这条指令后⾯加上:-lz -lrt -lpthread,完整的如下:

LIBS = -lm -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lz -lrt -lpthread

保存后退出,此时再次在命令⾏⾥输⼊:

make

<7> 如果你启用了‘--enable-cpp’将会出现:

make: *** No rule to make target 'misc/bximage.cc', needed by 'misc/bximage.o'.  Stop.

解决方法:

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/vcp-img.cc

cp iodev/hdimage/vbox.cpp iodev/hdimage/vbox.cc

继续出现:

我猜测这是我之前选择 --enable-cpp 搞出来的事情,所以我们还是不要--enable-cpp了,重新configure一下,再来过。

可以看到安装成功后的目录结构:

最新文章

  1. WPF DEV控件-ChartControl用法
  2. Atitit 教育与培训学校 的计划策划 v2
  3. LeetCode Combination Sum III (DFS)
  4. poj 3017 单调队列优化动态规划
  5. Unity3d shader之SWAP Force Depth-of-Field Shader
  6. 【转】ConcurrentModificationException异常解决办法 --不错
  7. SQL重复记录查询的几种方法(转)
  8. Linux应用环境实战10:Bash脚本编程语言中的美学与哲学(转)
  9. 微信小程序添加、删除class’
  10. 用Java语言实现简单的词法分析器
  11. JavaScript 流程语句知识脑图
  12. php操作excel表格的导入和导出
  13. [Swift]LeetCode667. 优美的排列 II | Beautiful Arrangement II
  14. [模板] 区间mex &amp;&amp; 区间元素种数
  15. Eclipse Debug不能热部署解决
  16. linux shell 重定向中的 &amp; 符号
  17. Beta版本冲刺(四)
  18. 基础001_Xilinx V7资源
  19. 51nod 1042数字0-9的数量
  20. 【k8s】kubernetes(k8s)介绍

热门文章

  1. ArcGIS工具 - 批量合并数据库
  2. python之路55 cookie与session 操作 把模块变成字符串进行导入
  3. 關於ctype.h頭文件的一些函數
  4. vue 解决循环引用组件/动态组件/组件未注册报错
  5. effective-c 条款2理解与思考
  6. 记录一次排查log4cxx库按照日期回滚,不创建新目录的BUG
  7. 线程、GIL、协程
  8. Vditor文件上传跨域
  9. 嵌入式Linux—Framebuffer应用编程
  10. 使用Docker搭建EPICS的IOC记录