VirtualBox开发环境的搭建详解
有关VirtualBox的介绍请参考:VirtualBox_百度百科
由于VirtualBox官网提供的搭建方法不够详细,而且本人在它指导下,从下载所需的开发包,到最后生成二进制文件,中间遇到了许多的问题,官网都没有提供任何讲解,我通过在网上查找、自己摸索,最后终于成功编译生成了。以下本文仅提供Windows 32位下的VirtualBox开发环境搭建方法。
我的开发环境是:
Windows XP SP3
Visual Studio 2010 SP1
VirtualBox 4.2.8
1.准备所需开发包
(1) Visual Studio 2010 SP1
按照官方给的说明(https://www.virtualbox.org/wiki/Windows%20build%20instructions),下载所需的开发库,其中Visual Studio 2010 SP1安装好后,Windows Platform SDK v7.1就不用下载了;
(2) WDK v7.1
Windows Driver Development Kit (WDK) v7.1.按要求下载;
(3) MingW
MingW先下载前两个(gcc-core-3.3.3、gcc-g++-3.3.3),后面的3个不用下载,只需点第一个(Runtime),会跳转到一个页面,提示:“Looking for the latest version? Download mingw-get-inst-20120426.exe (662.7 kB)”,点击它下载安装,安装完后,将刚才下载的gcc-core与gcc-g++解压,并覆盖到安装完的MingW路径中,MingW就算准备完成;
(4) Qt4
下载Qt4,会很大,其实只需用到里面的bin、include、lib、src文件夹;
(5) cURL
再下载cURL,注意要下载devel的无SSL版本;
(6) SDL、zlib
剩下的SDL、zlib按要求下载,有开发版的就下开发版;
(7) openssl 0.9.8x
然后是下载openssl,记着一定要下载0.9.8x版本,太新的版本在后面编译会出问题,我下的是0.9.8y版本。安装openssl需要下载perl,我下载的是ActivePerl。
执行Visual Studio Command Prompt (2010),转到openssl源码的根目录,执行命令:
perl Configure VC-WIN32
执行完后会提示“Configured for VC-WIN32.” 然后执行命令:
ms\do_ms
然后是执行命令进行openssl编译:
nmake -f ms\ntdll.mak
如果没有问题,openssl则安装完毕。这时,需要手动创建include、bin、lib供后面VitualBox编译时使用。将openssl中的include文件夹改名为其它名字,再将inc32重命名为“include”,然后创建bin、lib两个文件夹,将out32dll文件夹中所有的*.lib文件复制到lib文件夹,再将所有*.exe、*.dll文件复制到bin文件夹。到此,openssl开发库准备完毕。
(8) Python 2.7.3
最后是要下载python 2.7.3,在后面编译时会用到。最好下载2.7版本,其它版本在后面编译时会有奇怪的错误。
2.编译VirtualBox
执行Visual Studio Command Prompt (2010),转到virtualbox源码的根目录。执行命令:
cscript configure.vbs --with-MinGW32=C:\VirtualBox\VBoxLib\MinGW --with-libSDL=C:\VirtualBox\VBoxLib\SDL --with-openssl=C:\VirtualBox\VBoxLib\openssl --with-libcurl=C:\VirtualBox\VBoxLib\libcurl --with-Qt4=C:\VirtualBox\VBoxLib\qt
如果没有错误,会出现两个文件:AutoConfig.kmk、env.bat。执行命令:
env.bat
再执行命令进行编译:
kmk
此时,kmk会按顺序把VirtualBox中的源码进行编译和链接,在此过程中会出现一些问题,下面针对这些问题一一进行修正,修正完后,再执行kmk命令,就可以生成VirtualBox的所有二进制文件了。
(1)
报错信息:
当执行kmk之后,如果程序停下来并有如下提示:
kmk: *** Waiting for unfinished jobs.... kmk: *** Exiting with status 2
说明编译遇到了问题,查找上面第一个出现“error”的地方,可以看到这一行:
C:\VirtualBox\VirtualBox-4.2.8\src\VBox\Disassembler\DisasmCore.cpp : error C2220: warning treated as error - no 'object' file generated
解决方法:
这是因为源码DisasmCore.cpp文件中的内容编码不正确导致的,只需使用Windows自带的记事本notepad.exe打开此文件,选择菜单栏“文件”-->“另存为”,在“另存为”对话框的最下面“编码”处选择“Unicode”,并保存即可。然后再执行kmk命令,刚才出现的错误就没有了。以下还会出现类似的错误,用这个方法解决即可。下面我把所有要修正的内容都列出来,全部修正之后再执行kmk命令吧:
(2)
报错信息:
kBuild: Generating python - C:/VirtualBox/VirtualBox-4.2.8/out/win.x86/release/obj/VBoxOGLgen/spu_dispatch_table.h kmk_redirect.exe: error: _spawnvp(_P_WAIT, "python-not-found.exe", ...) failed:No such file or directory
解决方法:
首先复制之前安装的Python的安装路径,然后在VirtualBox源码根目录的Makefile.kmk文件中添加一行:
VBOX_BLD_PYTHON=C:\Python27\python.exe
(3)
报错信息:
C:\VirtualBox\VirtualBox-4.2.8\include\VBox/vmm/hwacc_vmx.h(773) : error C2220:warning treated as error - no 'object' file generated
解决方法:
像上面(1)所说明的方法以Unicode编码重新保存文件即可。
(4)
报错信息:
C:\VirtualBox\VirtualBox-4.2.8\src\VBox\VMM\VMMAll\SELMAll.cpp : error C2220: warning treated as error - no 'object' file generated
解决方法:
像上面(1)所说明的方法以Unicode编码重新保存文件即可。
(5)
报错信息:
kBuild: Compiling VBoxMMRHook - C:/VirtualBox/VirtualBox-4.2.8/src/VBox/Additions/WINNT/VBoxMMR/logging.cpp kmk: *** No rule to make target `C:/VirtualBox/VirtualBox-4.2.8/tools/win.x86/sdk/v7.1/Lib/WS2_32.lib', needed by `C:/VirtualBox/VirtualBox-4.2.8/out/win.x86/release/obj/VBoxMMRHook/VBoxMMRHook.dll'. Stop.
解决方法:
在VirtualBox源码中,找到这个路径下的Makefile.kmk文件:C:\VirtualBox\VirtualBox-4.2.8\src\VBox\Additions\WINNT\VBoxMMR\Makefile.kmk,将里面第62行、第63行的这两行内容注释掉,在前面添加“#”即可:
#VBOX_PATH_PSDK_v71 := \ # $(PATH_DEVTOOLS)/win.x86/sdk/v7.1
并且添加这一行内容:
VBOX_PATH_PSDK_v71 := $(PATH_SDK_WINPSDK71)
(6)
报错信息:
C:\VirtualBox\VirtualBox-4.2.8\src\VBox\Main\testcase\tstGuestCtrlParseBuffer.cpp(92) : error C2017: illegal escape sequence C:\VirtualBox\VirtualBox-4.2.8\src\VBox\Main\testcase\tstGuestCtrlParseBuffer.cpp(92) : error C2146: syntax error : missing '}' before identifier '漩f漩' C:\VirtualBox\VirtualBox-4.2.8\src\VBox\Main\testcase\tstGuestCtrlParseBuffer.cpp(92) : error C2146: syntax error : missing '}' before identifier '漩f漩' C:\VirtualBox\VirtualBox-4.2.8\src\VBox\Main\testcase\tstGuestCtrlParseBuffer.cpp(92) : error C2146: syntax error : missing ';' before identifier '漩f漩' C:\VirtualBox\VirtualBox-4.2.8\src\VBox\Main\testcase\tstGuestCtrlParseBuffer.cpp(92) : error C2143: syntax error : missing ';' before 'constant' ……
解决方法:
用Visual Studio打开文件VirtualBox-4.2.8\src\VBox\Main\testcase\tstGuestCtrlParseBuffer.cpp,按“Ctrl + G”定位到第92行,可以看到,在这些乱码中缺少了两个引号,加上使得语法正确即可:
原先:
改之后:
(7)
报错信息:
c:\virtualbox\virtualbox-4.2.8\src\vbox\devices\testcase\../PC/DevLPC.cpp : error C2220: warning treated as error - no 'object' file generated
解决方法:
像上面(1)所说明的方法以Unicode编码重新保存文件即可。
以上就是需要修正的问题,这时执行kmk命令,大概需要20分钟左右的时间,就可以生成VirtualBox的全部二进制文件,如果编译链接没有出错的话,最后kmk的输出如下图:
并且在VirtualBox源码根目录会生成“out”文件夹,大概有2.78G的大小,VirtualBox.exe执行文件就在“VirtualBox-4.2.8\out\win.x86\release\bin”中。
3.执行VirtualBox
在执行VirtualBox.exe之前,需要把运行时需要的dll库复制到与VirtualBox.exe同一路径或system32下,包括以下文件:
然后,需要执行VirtualBox.exe同一路径中的两个命令:“comregister.cmd”、“loadall.cmd”,其中,“loadall.cmd”必须要在“Visual Studio Command Prompt (2010)”命令行中运行,执行过程中会安装虚拟机网络驱动,如下图所示:
最后,就可以正常运行我们自己编译的VirtualBox.exe啦:
VirtualBox开发环境的搭建详解相关推荐
- php mac 开发环境搭建_Mac搭建php的开发环境(图文详解)
搭建php的开发环境(图文详解) 这篇文章主要介绍了Mac下搭建php开发环境教程,Mac OS X内置了Apache 和 PHP,这样使用起来非常方便.本文以Mac OS X 10.6.3为例,需要 ...
- 基于windows子系统WSL2搭建openharmony开发环境(图文详解)
WSL(Windows Subsystem for Linux)是Microsoft弄出来的windows下的linux子系统,主要目的也就是为了给开发者提供便利,抢占macOs的市场.想必大家对它都 ...
- python常用的集成开发环境和编辑器有哪些_常用的几款Python集成开发环境或者编辑器详解...
Python3开发常用工具一:为什么使用开发工具? 在Python3教程之<安装>中,我们已经安装了Python开发环境,但是在终端里执行相关命令始终是不能开发大型项目的,并且对写过的代码 ...
- python自带的集成开发环境是什么-常用的几款Python集成开发环境或者编辑器详解...
Python3开发常用工具一:为什么使用开发工具? 在Python3教程之<安装>中,我们已经安装了Python开发环境,但是在终端里执行相关命令始终是不能开发大型项目的,并且对写过的代码 ...
- idea python-IDEA里如何安装Python插件打造开发环境(图文详解)
前言 python是一种功能强大和适用面很广的开发语言,在大数据应用和机器学习日益流行的年代,python凭借其简洁.易用和可扩展性获得很多用户的支持,近年来使用率高速增长.python环境下,集成了 ...
- IDEA里如何安装Python插件打造开发环境(图文详解)
前言 python是一种功能强大和适用面很广的开发语言,在大数据应用和机器学习日益流行的年代,python凭借其简洁.易用和可扩展性获得很多用户的支持,近年来使用率高速增长.python环境下,集成了 ...
- docker项目部署 php_使用Docker部署PHP开发环境的方法详解
本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读.希望对大家有所帮助. 环境部署一直是 ...
- Java开发环境配置过程详解(包括IDEA配置Java)
Java开发环境配置 一.JDK下载安装 1. 官网下载JDK 2. 本地安装JDK 3. 配置环境变量 4. 验证是否安装成功 二.IDEA进行Java开发 1. 创建Java项目 2. 程序测试 ...
- 怎样配置Java开发环境?步骤详解
配置Java开发环境 先了解三个概念 JVM JVM(Java Virtual Machine,Java虚拟机)是一种具备计算机核心配置的计算环境,在实际的计算机上虚拟计算机各种运算功能,有自己完善的 ...
- notepad 配置python_Notepad++配置Python开发环境的图文详解
Notepad++ 是一款非常有特色的编辑器,软件小巧高效,支持27种编程语言,通吃C,C++ ,Java ,C#, XML, HTML, PHP,JS,python 等.是程序员必备开源软件,可以免 ...
最新文章
- TS中的感叹号和问号的用法
- 关于IsolatedStorageFile存取文件的问题
- python绘制3d图-Python matplotlib绘图示例 - 绘制三维图形
- 藏青色在html页面怎么写,Html页面支持暗黑模式的实现
- 【Data Mining】机器学习三剑客之Numpy常用用法总结
- hbase中的row key_hbase中RowKey的设计规则
- C#正则表达式提取HTML中IMG标签的URL地址 .
- java amount_java.time.Period.plus(TemporalAmount amountToAdd)方法
- Mac IDEA切换主题颜色
- 用Python爬取漫画并转换格式为pdf和mobi
- fis3 前端项目构建,一步步来
- UE4C++开发学习笔记(01)——创建一个能操控的Character
- linux系统怎么调节分辨率,直观:Linux下的高分辨率屏幕设置
- NodeJS 文件操作 —— fs 基本使用
- debussy vhdl co-simulation
- 我所玩过的GALGAME——メンアットワーク!魔兽学院men at work2的中文版《永远的羁绊》全攻略
- 前台、后台ui的选择
- Linux九阴真经之九阴白骨爪残卷3(自动化运维之系统安装)
- 【Introductory Biology】Lecture 13 - Genetics 2 - Rules of Inheritance 遗传学2 - 继承规则
- React Native开发之常用第三方控件
热门文章
- c语言答案纪纲,重庆理工大学C语言程序设计基础教程习题答案(纪纲金艳).doc
- oracle12c bug,12c expdp ORA-31623 -又遇到BUG
- 示例1---从记事本中读取数值,然后写到数组中
- python django做网页论文_Python Web程序-Django框架搭建网站的简单介绍
- php分页类怎么使用,PHP实现的分页类定义与用法示例
- 括号匹配深度,交错01字符串(一个类型代码)
- 天融信荣获《中国信息安全》2018年度“双推”活动两项荣誉
- app.honeycomb.Shell$HomeActivity failed to start
- CentOs 6.2 x64双网卡绑定
- python备份文件