由于VirtualBox项目在6.0版本后仅支持64位。因此,本次编译的版本号为5.2.44,最后一个同时支持32位和64位的版本。
虽然有官方的编译指南,但是该指南并不清晰,并且并不适应所有版本。同样,本指南也并不适用于所有版本,仅在5.2.44上测试通过。
Prerequisites
WIN10
- 最好是win10虚拟机,因为要开测试模式。
VS2010 SP1
- 必须是vs2010 sp1,而且最好为英文版,同时系统最好也是英文版,否则执行configure.vbs时会找不到cl.exe。需要修改其中的代码。
- 下载链接:
Visual studio 2010: 使用迅雷下载: ed2k://|file|en_visual_studio_2010_ultimate_x86_dvd_509116.iso|2446950400|0694CFA0756D8C11499DE5B42E205410|/ SP1: ed2k://|file|mu_visual_studio_2010_sp1_x86_dvd_651704.iso|1592336384|C703F08639BBBE0F6F53C694C956F484|/
Win DDK 7.1
微软提供的web安装exe无法下载成功,需要找iso。sdk7.1也一样。
WinSDK 7.1
安装失败就先到控制面板卸载vc++ 2010相关组件。
SSL
- 必须是openssl 1.1.x版本,由于已经下不到编译好的库了。需要自己编译。具体方法可参考如下链接:
- openssl Window系统如何编译openssl_openssl windows编译
- windows编译openssl(64位)一游 - 心在哈尔滨 - 博客园
- 编译时出现说没有nmake和dmake的,不用管。
- 32位和64位都需要编译。
- 特别需要注意的是,本文中需要编译的,都需要使用vs2010.
SDL
qt5
- Qt5.6.3_x86_vs2010
- Qt5.6.3源码
- 通过源码编译64位的库。
MINGW
python
- 需要2.7.x版本。
curl
- 需要同时编译32位和64位版本。
编译脚本
configuration
SET VS2010VC_DIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0
SET WINDDK_DIR=C:\WinDDK\7600.16385.1\bin\amd64
SET DEFAULT_DIR=C:\VBoxBuild_x86
SET MINGW_DIR=%DEFAULT_DIR%\MinGW\mingw64
SET SDL_DIR=%DEFAULT_DIR%\SDL\SDL-1.2.11
SET SSL64_DIR=%DEFAULT_DIR%\SSL\OpenSSL-Win64
SET SSL32_DIR=%DEFAULT_DIR%\SSL\OpenSSL-Win32
SET CURL_DIR=%DEFAULT_DIR%\curl\curl-7.64.1
SET QT_DIR=%DEFAULT_DIR%\Qt\qt-everywhere-opensource-src-5.6.3
SET QT_BUILD_DIR=%DEFAULT_DIR%\Qt\qt5-x64
SET VBOX_DIR=%DEFAULT_DIR%\VirtualBox-5.2.44
SET PYTHON_DIR=C:\Python27
@REM TARGET_ARCH=x86,下面这个编译32位程序
cscript configure.vbs --with-vc="%VS2010VC_DIR%" --with-qt5="C:\VBoxBuild_x86\Qt\Qt5.6.3-Windows-x86-VS2010-20200104" --with-DDK="%WINDDK_DIR%" --with-MinGW32="C:\VBoxBuild_x86\MinGW\MinGW3.2-gcc3.3.3" --with-libSDL="%SDL_DIR%" --with-openssl="%SSL32_DIR%" --with-libcurl="%DEFAULT_DIR%\curl\x32" --with-python="%PYTHON_DIR%" --target-arch="x86"
@REM TARGET_ARCH=amd64,下面这个编译64位程序
@REM cscript configure.vbs --with-vc="%VS2010VC_DIR%" --with-qt5="%QT_BUILD_DIR%" --with-DDK="%WINDDK_DIR%" --with-MinGW-w64="%MINGW_DIR%" --with-libSDL="%SDL_DIR%" --with-openssl="%SSL64_DIR%" --with-openssl32="%SSL32_DIR%" --with-libcurl="%DEFAULT_DIR%\curl\x64" --with-libcurl32="%DEFAULT_DIR%\curl\x32" --with-python="%PYTHON_DIR%"
![image](/i/l/?n=24&i=blog/1428025/202407/1428025-20240726173845555-643569424.png)
make
等上述脚本执行后,根据提示,执行env.bat和kmk命令就好。
后续
由于可以参考下面的github那个脚本,因此本文讲的很简略,仅把关键部分讲解了。其中相关组件用上述的替换,并修改相应路径。
尤其是软件版本号,以及configure脚本中,编译32位程序时,需要哪些,而编译64位程序时又要更改哪些,一定不能弄错。
参考
官方指南
build-virtualbox-in-windows