VirtualBox 4.3.10在Windows XP 32位系统的编译安装详解_第1页
VirtualBox 4.3.10在Windows XP 32位系统的编译安装详解_第2页
VirtualBox 4.3.10在Windows XP 32位系统的编译安装详解_第3页
VirtualBox 4.3.10在Windows XP 32位系统的编译安装详解_第4页
VirtualBox 4.3.10在Windows XP 32位系统的编译安装详解_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VirtualBox 4.3.10在Windows XP 32位系统的编译安装详解有关VirtualBox虚拟机的介绍请自行网上搜索(略)。本说明配套的相关工具和库文件(除Qt、VS2010、VS2010SP1补丁外)已打包,请查看官网说明网址:/wiki/Windows%20build%20instructions源码更新记录查看地址:/browser/vbox/trunk/src/VBox/Devices?rev=51062VirtualBox编译的难点就在于编译环境的搭建,本人按官方要求下

2、载所需的各种库、开发包及源文件,到最后生成二进制文件,并在虚拟机中安装成功。  而官网提供的搭建方法不够详细,在参考并结合“博客园cxun”的文章“VirtualBox开发环境的搭建详解”和“百度空间hacker9588”的文章“VirtualBox OSE编译手记 on Windows Server 2003”之后,整理出适用于新手级别的编译教程,cxun的文章对于编译过程的错误信息及处理方法解释得比较详细,而后者hacker9588的文章则主要着重介绍编译环境的编译和搭建,在此非常感谢他们分享了非常宝贵的经验。 编译系统环境是:Windows XP SP3Vi

3、sual Studio 2010 SP1VirtualBox 4.3.101.准备所需开发包(1) Visual Studio 2010 SP1按照官方给的说明,下载所需的开发库,其中Visual Studio 2010 SP1安装好后,Windows Platform SDK v7.1可以不下载安装,就用vs2010自带的就行;Visual Studio 2010旗舰版原版(MSDN版)文件名:cn_visual_studio_2010_ultimate_x86_dvd_532347.iso语言:Chinese - SimplifiedSHA1:44B73423A7BBCE38D06BA55

4、ECD821946630BEA4D下载地址:ed2k:/|file|cn_visual_studio_2010_ultimate_x86_dvd_532347.iso|2685982720|4AE6228933DDE49D9BFA4C3467C831C2|/Visual Studio 2010 SP1升级补丁(MSDN版)文件名:mu_visual_studio_2010_sp1_x86_dvd_651704.iso(微软官方文件名:VS2010SP1dvd1.iso)语言:English, Japanese, Korean, German, Spanish, French, Italian,

5、 Russian, Chinese - Traditional, Chinese - SimplifiedSHA1:61C2088850185EDE8E18001D1EF3E6D12DAA5692下载地址:=(2) Windows Platform SDK v7.1 可以不用下载安装,使用vs2010自带的即可。(3) Windows Driver Development Kit (WDK) v7.1Windows Driver Development Kit (WDK) v7.1(文件名:GRMWDK_EN_7600_1.ISO)下载地址:(4) MingW (32-bi

6、t Windows only):安装MingW方法:(a)根据下列地址下载相关文件“gcc-core-3.3.3-20040217-1.tar.gz”、“gcc-g+-3.3.3-20040217-1.tar.gz”、“mingw-runtime-3.8.tar.gz”、“w32api-3.5.tar.gz”、“binutils-2.13.90-20021006-2.tar.gz”。(b)新建MingW文件夹(假设安装在D盘根目录下,刚在D盘根目录下新建MingW文件夹),将上一步(a)下载的文件解压到新建的MingW文件夹中,同名文件夹的文件则解压合并到同一文件夹下(各压缩文件夹均存在有同名

7、文件夹)。(c)设置环境变量(在“我的电脑”-右键“属性”-“高级”-“环境变量”-“系统变量”-“Path”值最末端加入D:MinGWbin目录,与其它目录用“分号”相隔)。MingW相关文件下载地址如下: gcc-core 3.3.3(文件名:gcc-core-3.3.3-20040217-1.tar.gz):下载地址:gcc-g+ 3.3.3(文件名:gcc-g+-3.3.3-20040217-1.tar.gz):下载地址:mingw-runtime 3.8(文件名:mingw-runtime-3.8.tar.gz):下载地址:w32api 3.5(文件名:w32api-3.5.tar.

8、gz):下载地址: binutils 2.13.90(文件名:binutils-2.13.90-20021006-2.tar.gz):下载地址:(5)MingW (64-bit Windows only).仅Windows 64位系统需要,安装方法参照“第(4)节”。mingw32-gcc 4.5.4(文件名:x86_64-w64-mingw32-gcc-4.5.4-release-win64_rubenvb.7z):下载地址:(6) Qt4.7.x版本以上。本次编译VirtualBox4.3.10只需用到Qt里面的bin、include、lib、src文件夹,本次编译使用

9、Qt4.8.5版。Qt 4.8.5(文件名:qt-win-opensource-4.8.5-vs2010.exe),安装文件包:下载地址:/official_releases/qt/4.8/4.8.5/qt-win-opensource-4.8.5-vs2010.exe(7) cURL下载cURL(注意要下载devel的无SSL版本),如果找不到所需的编译完成的文件,也可下载cURL源程序自行编译。cURL-7.36.0(文件名:curl-7.36.0.tar.bz2),源码程序,需要编译:下载地址:http:/curl.haxx.se

10、/download.html#Win32使用源码程序自行编译方法: 进入DOS提示符下,输入以下指令定位到指定路径;pushd D:Vbox_Build curl-7.36.0lib /定位到D:Vbox_Buildcurl-7.36.0lib目录。nmake /f Makefile.vc10 cfg= release-dll /VS2010编译指令,并将结果输出到release-dll目录下,同时release-dll也是命令参数,表征编译的目标版本类型之类的东西,详见下图1。 xcopy /E /I D:Vbox_Buildcurl-7.36.0include D:Vbox_Bu

11、ildlibcurl-7.36.0include /将源码程序D:Vbox_Buildcurl-7.36.0目录下的include文件夹复制到D:Vbox_Buildlibcurl-7.36.0目录下。pushd D:Vbox_Buildcurl-7.36.0lib release-dll /定位到release-dll目录下。copy libcurl.dll D:Vbox_Buildlibcurl-7.36.0 /将out目录下的libcurl.dll文件复制到D:Vbox_Buildlibcurl-7.36.0目录下。copy libcurl_imp.lib D:Vbox_Buildlib

12、curl-7.36.0libcurl.lib /将out目录下的libcurl_imp.lib文件重命名成libcurl.lib后复制到D:Vbox_Buildlibcurl-7.36.0目录下。图1(8)libxml2 和libxslt1(本次编译未使用,暂不知道怎么使用)下载地址:libxml2:/downloads.html libxslt1:/XSLT/downloads.html(9) SDL v1.2.7 版以上开发包 (Visual C+): 按要求下载,有开发版的就下开发版,也可下

13、载源程序自行编译。SDL-1.2.15(文件名:SDL-devel-1.2.15-VC.zip),已编译完成的文件:下载地址:/download-1.2.php(10) zlibzlib-1.2.8(文件名:zlib128-dll.zip),已编译完成的文件:下载地址:(11) openssl 0.9.8x下载openssl,尽量下载0.9.8x版本,太新的版本在后面编译可能会出问题,我下的是1.0.1g版本。安装openssl需要下载perl,我下载的是ActivePerl。openssl-0.9.8x(文件名:openssl-0.9.8x.tar.g

14、z),已编译完成的文件:下载地址:/source/ActivePerl-802(文件名:ActivePerl-802-MSWin32-x86-64int-298023.msi),安装文件:官网其它版本下载地址:openssl-0.9.8x编译方法(openssl-1.0.1g适用): 下载并安装ActivePerl(默认安装即可),本次编译使用ActivePerl-802版。 执行Visual Studio Command Prompt (2010),转到openssl源码的根目录,执行命令:perl C

15、onfigure VC-WIN32执行完后会提示“Configured for VC-WIN32.” 然后执行命令:msdo_ms然后是执行命令进行openssl编译:nmake -f msntdll.mak如果没有问题,openssl则安装完毕。这时,需要手动创建include、bin、lib供后面VitualBox编译时使用。将openssl中的include文件夹改名为其它名字,再将inc32重命名为“include”,然后创建bin、lib两个文件夹,将out32dll文件夹中所有的*.lib文件复制到lib文件夹,再将所有*.exe、*.dll文件复制到bin文件夹。到此,opens

16、sl开发库准备完毕。以下3项为可选组件:(12) Python 2.7.5如果你建立Python API bindings,就需要WebService和COM,就要下载此工具。最好下载2.7版本,其它版本在后面编译时可能会有奇怪的错误。 Python-2.7.5(文件名: Python-2.7.5.tar.bz2),源码文件:下载地址:/ftp/python/2.7.5/Python-2.7.5.tar.bz2 Python-2.7.5(文件名:python-2.7.5.msi),32位系统安装文件:下载地址:https:/www.

17、/ftp/python/2.7.5/python-2.7.5.msi其它版本下载地址:/download/releases/2.7.5/(13) gSOAP 2.7.12如果你建立 webservice API server,就要下载此工具。gSOAP 2.7.12(文件名:gsoap_2.7.12.tar.gz),已编译完成的文件:下载地址:(14) Java SE 6 JDK(本次编译未使用,暂不清楚怎么使用)如果你建立 Java API bindings,就要下载此工具。Java SE 8 JDK(文件名:

18、jdk-8u5-windows-i586.exe),安装文件:下载地址:其它版本下载地址:2.目录结构:编译所需各种库文件、工具包及源码程序具体存放路径可自行决定,只需根据实际路径设置相关的环境变量即可。  D:Vbox_Build   curl-7.36.0 /源程序文件   libcurl-7.36.0 / curl-7.36.0编译完成的用于VirtualBox4.3.10编译的相关库文件   gsoap-2.7   mingw   openssl-1.0.1g / 官

19、网要求openssl-0.9.8x以上版本   qt /Qt4.8.5的安装目录   SDL-1.2.15   Python27 /Python2.7.5程序   VirtualBox-4.3.10 /VirtualBox源码程序 C:WINDDK7600.16385.1 /Windows Driver Development Kit (WDK) v7.1安装后默认文件路径3.编译VirtualBox 设置环境变量在“我的电脑”“属性”“高级”选项(见图2)中设置环境变量(在原有的基础上添加),各路径之间

20、用“;”相隔。Path=C:WinDDK7600.16385.1; D:Vbox_BuildMinGWbin; D:Vbox_Buildlibcurl-7.36.0如果Visual Studio 2010是中文版,则要在运行编译命令之前修改virtualbox源码的根目录下的configure.vbs文件中的一个地方。找到这样一段代码:if   (InStr(1, g_strShellOutput, "Version 16.") <= 0) _    And (InStr(1, g_strShellOutput, &q

21、uot;Version 17.") <= 0) then      MsgError "The Visual C+ compiler we found ('" & strPathVC & "') isn't 7.1 or 8.0. Check the build requirements."      exit sub   end if   ' 

22、0; ' Ok, emit build config variables.   '   if InStr(1, g_strShellOutput, "Version 16.") > 0 then把里面的3处“Version”都改成“编译器”,不包括引号,这一点很重要,不然脚本是找不到你的编译器的,提示你的Visual Studio版本不符合要求。图2 执行Visual Studio Command Prompt (2010)(DOS命令提示符窗口),转到virtualbox源码的根目录。执行命令:csc

23、ript configure.vbs -with-DDK=C:WinDDK7600.16385.1 -with-MinGW32=D:MinGW -with-libSDL= D:Vbox_BuildSDL-1.2.15 -with-openssl= D:Vbox_Buildopenssl-1.0.1g -with-libcurl= D:Vbox_Buildlibcurl-7.36.0 -with-Qt4= D:Vbox_BuildQt4.8.5 -with-python= D:Vbox_BuildPython27如果没有错误,在virtualbox源码的根目录会生成两个文件:AutoConfig

24、.kmk、env.bat。 在Visual Studio 2010打开文件AutoConfig.kmk,在最后添加下列代码:VBOX_GSOAP_INSTALLED = 1VBOX_PATH_GSOAP := D:Vbox_Buildgsoap-2.7/gsoapVBOX_PATH_GSOAP_BIN := $(VBOX_PATH_GSOAP)/bin/win32 在DOS命令提示符窗口执行命令(需要定位到virtualbox源码的根目录):env.bat再执行命令进行编译:kmk此时,kmk会按顺序把VirtualBox中的源码进行编译和链接,在此过程中会出现一些问题,下面针对这些问题一一进

25、行修正,修正完后,再执行kmk命令,就可以生成VirtualBox的所有二进制文件了。  (1)报错信息(本次编译未出现):kBuild: Generating python - D:Vbox_Build/VirtualBox-4.3.10/out/win.x86/release/obj/VBoxOGLgen/spu_dispatch_table.hkmk_redirect.exe: error: _spawnvp(_P_WAIT, "python-not-found.exe", .) failed:No such file or directory解决方法:首先

26、复制之前安装的Python的安装路径,然后在VirtualBox源码根目录的Makefile.kmk文件中添加一行:VBOX_BLD_PYTHON= D:Vbox_BuildPython27python.exe (2)报错信息:当执行kmk之后,如果程序停下来并有如下提示:kmk: * Waiting for unfinished jobs.kmk: * Exiting with status 2说明编译遇到了问题,查找上面第一个出现“error”的地方,可以看到这一行:C:VirtualBoxVirtualBox-4.3.10srcVBoxDisassemblerDisasmCor

27、e.cpp : error C2220: warning treated as error - no 'object' file generated解决方法:这是因为源码DisasmCore.cpp文件中的内容编码不正确导致的,只需使用Windows自带的记事本notepad.exe打开此文件,选择菜单栏“文件”->“另存为”,在“另存为”对话框的最下面“编码”处选择“Unicode”,并保存即可。然后再执行kmk命令,刚才出现的错误就没有了。以下还会出现类似的错误,用这个方法解决即可。下面我把所有要修正的内容都列出来,全部修正之后再执行kmk命令吧:  (3)

28、报错信息(本次编译仅为“警告”):D:Vbox_BuildVirtualBox-4.3.10includeVBox/vmm/hwacc_vmx.h(773) : error C2220:warning treated as error - no 'object' file generated解决方法:像上面(1)所说明的方法以Unicode编码重新保存文件即可。  (4)报错信息:D:Vbox_BuildVirtualBox-4.3.10srcVBoxVMMVMMAllSELMAll.cpp : error C2220: warning treated as

29、 error - no 'object' file generated解决方法:像上面(1)所说明的方法以Unicode编码重新保存文件即可。 (5)报错信息:D:Vbox_Buildvirtualbox-4.3.10srcvboxdevicestestcase./PC/DevLPC.cpp : error C2220: warning treated as error - no 'object' file generated解决方法:像上面(1)所说明的方法以Unicode编码重新保存文件即可。 (6)报错信息(本次编译未出现):kBuil

30、d: Compiling VBoxMMRHook - D:Vbox_Build/VirtualBox-4.3.10/src/VBox/Additions/WINNT/VBoxMMR/logging.cppkmk: * No rule to make target D:Vbox_Build/VirtualBox-4.3.10/tools/win.x86/sdk/v7.1/Lib/WS2_32.lib', needed by D:Vbox_Build/VirtualBox-4.3.10/out/win.x86/release/obj/VBoxMMRHook/VBoxMMRHook.dll&

31、#39;. Stop.解决方法:在VirtualBox源码中,找到这个路径下的Makefile.kmk文件:D:Vbox_BuildVirtualBox-4.3.10srcVBoxAdditionsWINNTVBoxMMRMakefile.kmk,将里面第62行、第63行的这两行内容注释掉,在前面添加“#”即可:#VBOX_PATH_PSDK_v71 := # $(PATH_DEVTOOLS)/win.x86/sdk/v7.1并且添加这一行内容:VBOX_PATH_PSDK_v71 := $(PATH_SDK_WINPSDK71)(7)报错信息:D:Vbox_BuildVirtualBox-4

32、.3.10srcVBoxMaintestcasetstGuestCtrlParseBuffer.cpp(92) : error C2017: illegal escape sequenceD:Vbox_BuildVirtualBox-4.3.10srcVBoxMaintestcasetstGuestCtrlParseBuffer.cpp(92) : error C2146: syntax error : missing '' before identifier '漩f漩'D:Vbox_BuildVirtualBox-4.3.10srcVBoxMaintestca

33、setstGuestCtrlParseBuffer.cpp(92) : error C2146: syntax error : missing '' before identifier '漩f漩'D:Vbox_BuildVirtualBox-4.3.10srcVBoxMaintestcasetstGuestCtrlParseBuffer.cpp(92) : error C2146: syntax error : missing '' before identifier '漩f漩'D:Vbox_BuildVirtualBox-4.3

34、.10srcVBoxMaintestcasetstGuestCtrlParseBuffer.cpp(92) : error C2143: syntax error : missing '' before 'constant'解决方法:用Visual Studio打开文件VirtualBox-4.3.10srcVBoxMaintestcasetstGuestCtrlParseBuffer.cpp,按“Ctrl + G”定位到第92行,可以看到,在这些乱码中缺少了两个引号,加上使得语法正确即可:原文:第92行: "漩?f漩0鲻?滗?, sizeof(&qu

35、ot;漩?f漩0鲻?滗?),修改之后:第92行: "漩?f漩0鲻?滗?", sizeof("漩?f漩0鲻?滗?"),(8)报错信息:D:gsoap-2.7gsoapstdsoap2.cpp(4156) : error C2440: “初始化”: 无法从“const X509V3_EXT_METHOD *”转换为“X509V3_EXT_METHOD *” 转换丢失限定符The failing command: C:/PROGRA1/MICROS2.0/VC/bin/cl.exe -c -TP -nologo -O2 -Zi -Zl -GR- -EHsc -

36、GF -MD -W3 -wd4065 -wd4244 -wd4996 -Zc:wchar_t- -O2 -Oy- -bigobj -ID:/gsoap-2.7/gsoap -ID:/gsoap-2.7/gsoap/import -ID:/VirtualBox-4.3.10/out/win.x86/release/obj/webservice -ID:/VirtualBox-4.3.10/src/VBox/Main/webservice -ID:/VirtualBox-4.3.10/out/win.x86/release/obj/vboxsoap/dtrace -ID:/openssl-1.0.

37、1g-VC/include -IC:/PROGRA1/MICROS2.0/VC/include -IC:/PROGRA1/MICROS2.0/VC/atlmfc/include -IC:/PROGRA1/MI25781/Windows/v7.0A/Include -ID:/VirtualBox-4.3.10/include -ID:/VirtualBox-4.3.10/out/win.x86/release -IC:/PROGRA1/MICROS2.0/VC/include -IC:/PROGRA1/MICROS2.0/VC/atlmfc/include -DVBOX -DVBOX_OSE -

38、DVBOX_WITH_64_BITS_GUESTS -DVBOX_WITH_DEBUGGER -DRT_OS_WINDOWS -D_WIN_ -DRT_ARCH_X86 -D_X86_ -D_WIN32_ -DIN_RING3 -DHC_ARCH_BITS=32 -DGC_ARCH_BITS=64 -DWITH_OPENSSL -D_CRT_SECURE_NO_DEPRECATE -FdD:/VirtualBox-4.3.10/out/win.x86/release/obj/vboxsoap/gsoap-2.7/gsoap/stdsoap2-obj.pdb -FD -FoD:/VirtualB

39、ox-4.3.10/out/win.x86/release/obj/vboxsoap/gsoap-2.7/gsoap/stdsoap2.obj D:gsoap-2.7gsoapstdsoap2.cpp解决方法:用Visual Studio 2010打开文件D:Vbox_Buildgsoap-2.7gsoap目录下的stdsoap2.cpp和stdsoap2.c文件,按“Ctrl + G”定位到第4156行,修改为强制转换即可:原文:第4156行:   X509V3_EXT_METHOD *meth = X509V3_EXT_get(ext);修改之后:第4156行: X509V3_E

40、XT_METHOD *meth = (X509V3_EXT_METHOD *)X509V3_EXT_get(ext); 以上就是需要修正的问题,这时执行kmk命令,大概需要20分钟左右的时间,就可以生成VirtualBox的全部二进制文件,如果编译链接没有出错的话,最后kmk的输出如下图3:图3并且在VirtualBox源码根目录会生成“out”文件夹,大概有2.78G的大小,VirtualBox.exe执行文件就在“VirtualBox-4.3.10outwin.x86releasebin”中。 4.运行VirtualBox(1)在执行VirtualBox.exe之前,需要把运行时需要的dll库复制到与VirtualBox.exe同一路径或system32下,包括以下文件:libcurl.dll /在D:Vbox_Buildlibc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论