闲来无事,研究一下VBox软件,在此记录下编译历程,供各位过路大侠围观,若有想与本渣交流者,可以给我发邮件(saltape@163.com),(本来想开个公众号,太懒了,一直没搞,此处手动狗头)。
开源软件VBox是一款虚拟机软件,没怎么使用过,看着界面简洁,装了个ubuntu,还不错。废话不多说,下面开始记录下手工编译过程,官网有编译指导(https://www.virtualbox.org/wiki/Windows%20build%20instructions),奈何指导不全,手工编译还是有一堆问题。
源码版本:VirtualBox-6.0.12 (https://www.virtualbox.org/wiki/Downloads)
编译依赖开发工具:
- Visual Studio 2010 with service pack 1
- Windows Platform SDK v7.1
- Windows Driver Development Kit (WDK) v7.1
- Qt v5.6.x or later
- SDL v1.2.7 or later
- the cURL library.(这个需要下载源码,自己编译)
- Yasm 1.3
- Python 2.7.x
- code signing utilities(WDK中有)
- openssl-1.1.1d(这个也是手工编译,需要编译出32和64位版本,d是开发版本)
- the zlib library
工具就这些,这其中比较复杂的有几部分,其中qt、curl及openssl都是需要手工编译的。
工具编译:
- qt5.6.3编译
- curl编译
- openssl编译
准备工作差不多了,下面进入VBox的编译过程:
1. 依次安装上述的工具或源码
2. 编写一个*.bat的脚本,主要用来省去每次编译需要手动设置环境变量的过程,脚本内容如下(路径可根据自身做相应修改):
1 echo "win64" 2 set PATH=%PATH%;D:\project\jobs\test\VirtualBox-6.0.12\VirtualBox-6.0.12\kBuild\bin\win.amd64; 3 set PATH=%PATH%;D:\project\jobs\test\VirtualBox-6.0.12\VirtualBox-6.0.12\kBuild\bin\darwin.amd64; 4 set PATH=%PATH%;D:\software\vmBoxTools\wdk7.1; 5 set PATH=%PATH%;D:\software\vmBoxTools\wdk7.1\bin; 6 set PATH=%PATH%;D:\software\vmBoxTools\vs2010\Common7\IDE; 7 set PATH=%PATH%;D:\software\vmBoxTools\vs2010\VC\bin; 8 set PATH=%PATH%;D:\software\vmBoxTools\vs2010\Common7\Tools; 9 set PATH=%PATH%;D:\software\vmBoxTools\vs2010\VC\vcpackages; 10 set PATH=%PATH%;D:\software\vmBoxTools\vs2010\VC\bin\amd64; 11 set PATH=%PATH%;D:\software\vmBoxTools\mingw64\bin; 12 echo run configure.vbs 13 cscript configure.vbs --with-MinGW-w64=D:\software\vmBoxTools\mingw64 --with-sdk=D:\software\vmBoxTools\windowsSDK71 --with-libSDL=D:\software\vmBoxTools\SDL2-2.0.14-win32-x64 --disable-sdl --with-openssl32=D:\software\vmBoxTools\x86\openssl32 --with-openssl=D:\software\vmBoxTools\x64\openssl64 --with-libcurl=D:\software\vmBoxTools\x64\libcurl64 --with-libcurl32=D:\software\vmBoxTools\x86\libcurl32 --with-Qt5=D:\project\opensource\qt-everywhere-opensource-src-5.6.3\qtbase --with-python=D:\software\vmBoxTools\py2.7 --with-vc=D:\software\vmBoxTools\vs2010\VC 14 15 echo run env.bat 16 call "D:\software\vmBoxTools\vs2010\VC\vcvarsall.bat" amd64 17 call env.bat 18 call kbuild\envwin.cmd --win64 --release 19 20 echo kmk start,please use kmk to build manually 21 ::kmk > result.txt 22 pause
3.设置一些编译选项,在源码根目录下建立一个文件LocalConfig.kmk
1 # -*- Makefile -*- 2 # 3 # Overwrite some default kBuild settings 4 # 5 6 # 7 # Copyright (C) 2006-2017 Oracle Corporation 8 # 9 # This file is part of VirtualBox Open Source Edition (OSE), as 10 # available from http://www.virtualbox.org. This file is free software; 11 # you can redistribute it and/or modify it under the terms of the GNU 12 # General Public License (GPL) as published by the Free Software 13 # Foundation, in version 2 as it comes in the "COPYING" file of the 14 # VirtualBox OSE distribution. VirtualBox OSE is distributed in the 15 # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. 16 # 17 VBOX_PATH_SIGN_TOOLS :=D:\software\vmBoxTools\wdk7.1\bin\amd64\SignTool.exe 18 VBOX_INF2CAT :=D:\software\vmBoxTools\wdk7.1\bin\selfsign\inf2cat.exe 19 # don't build testcases to save time, they are not needed for the package 20 VBOX_WITH_TESTCASES := 21 VBOX_WITH_VALIDATIONKIT := 22 23 # required for VBOX_WITH_RUNPATH 24 #VBOX_WITH_ORIGIN := 25 VBOX_WITH_ADDITIONS := 26 BOX_WITH_ADDITIONS_PACKING := 27 VBOX_WITH_VALIDATIONKIT := 28 VBOX_WITH_WEBSERVICES := 29 VBOX_WITHOUT_HARDENING := 30 KBUILD_TARGET_ARCH :=amd64 31 KBUILD_TYPE :=debug 32 VBOX_SIGNING_MODE :=test 33 VBOX_WITH_COMBINED_PACKAGE=1 34 #code singed path 35 VBOX_PATH_SIGN_TOOLS :=D:\software\vmBoxTools\wdk7.1\bin\amd64 36 VBOX_INF2CAT :=D:\software\vmBoxTools\wdk7.1\bin\selfsign\Inf2Cat.exe
4. 做完以上步骤,打开vs2010的command工具,进入vbox的源码根目录,执行以下两个步骤即可
4.1 make.bat
4.2 kmk,至此vbox编译步骤结束
4.3 以上两个步骤完成后,如果没有报错,会在源码根目录下生成out\win.amd64\debug\bin
4.4 cd out\win.amd64\debug\bin;
comregister.cmd //驱动注册
loadall.cmd
4.5 可以在bin下看到vbox*.exe,执行即可运行。
编译过程中遇到的问题:
问题较多,可能是本渣太渣,就不贴了,如果有兴趣,请在下面留言交流
ps:有兴趣的小伙伴在下方留言,希望与大家共同成长
欢迎有兴趣的小伙伴,关注我的公众号,一起来学呀