閑來無事,研究一下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:有興趣的小伙伴在下方留言,希望與大家共同成長
歡迎有興趣的小伙伴,關注我的公眾號,一起來學呀