WindowsホストでのVirtualBoxの作り方

Pocket

***本記事にはプロモーションが含まれています。***

ここにビルドの仕方が書いてあります。
http://www.virtualbox.org/wiki/Windows%20build%20instructions
VisualC++と、Platform SDK、DirectX SDK、Windows DDKを順にインストールします。
VisualC++は、Express Editionを使いました。
MinGWは、MinGW-3.1.0-1.exeをインストールし、gcc-3.3.1などをC:MinGWディレクトリで展開しました。
SDLは、ソースコードからVC++を使って作りましたが、Development Librariesにあるものでも良いと思います。ソースコード内に、VisualC.zipというファイルがあるので、展開するとプロジェクトを開くことができます。
自分で作った場合は、
include
lib/SDL.dll
lib/SDL.lib
lib/SDLmain.lib
のように配置されている必要があります。
XercesとXalan。
VC++ Express Editionで作ろうとしたけど、作れなかった。VC6用のバイナリを使ってみることにした。
Q...をViusalC++ Express Edition用に作る。
ここにやり方が書いてある。
http://qtwin.sourceforge.net/qt3-win32/compile-msvc-2005.php
まず、コマンドプロンプトの環境整備です。
C:Program FilesMicrosoft Visual Studio 8Common7Toolsvsvars32.batに、PlatformSDKのPATH、INCLUDE、LIBを加えた。加える位置は、@goto endの前です。
@set PATH=C:Program FilesMicrosoft Platform SDK for Windows Server 2003 R2bin;%PATH%
@set INCLUDE=C:Program FilesMicrosoft Platform SDK for Windows Server 2003 R2Include;%INCLUDE%
@set LIB=C:Program FilesMicrosoft Platform SDK for Windows Server 2003 R2Lib;%LIB%
qt-3のconfigure.batを実行する前に、環境変数をセットした。QMAKESPECには、win32-msvc2005を指定した。
set QTDIR=C:qt-3
set PATH=%QTDIR%bin;%PATH%
set QMAKESPEC=win32-msvc2005
コンパイル後、qt-3libの中にdynamicというフォルダを作り、lib/qtmain.libをlibdynamicqtmain.libにコピーしました。また、libqt-mt3.libをlibdynamicqt-mt333.libに名前を変えてコピーしました。また、binqt-mt3.dllをbinqt-mt333.dllに名前を変えてコピーしました。これは、configure.vbsを実行するときにチェックされるからです。ただ、このように変更して本当に大丈夫なのかはどうかは、わかりません。
[追記:configure.vbsのlib/dynamic/qt-mt33*.libとなっているところをlib/dynamic/qt-mt3*.libに変更して、qt3のlibファイルをdynamicに丸ごとコピーするとVirtualBox.exeができたそうです。こちらのほう良いと思います。]
以上で、ライブラリの整備はおしまいです。
次に、ソースコードの先頭でcscript configure.vbsを実行します。次のようなオプションをつけて実行しました。
cscript configure.vbs --with-DDK=C:WINDDK3790.1830 --with-MinGW=C:MinGW --with-libSDL="C:Program FilesSDL-1.2.11" --with-Xerces="C:Program Filesxerces-c-windows_2000-msvc_60" --with-Xalan="C:Program FilesXalan-C_1_10_0-win32-msvc_60" --with-Qt="C:Qt-3" --with-VC-Express-Edition
このとき、kBuildがアップデートされていると、kmk.exe --versionが起動できないというエラーになってしまうようです。そのときは、kBuildbinwin.x86フォルダを別のところに移動し、元の位置に移動しなおすと動きました。これは、NTFSで他のコンピュータで作ったフォルダにはアクセス制限がかかるからです。正式にはセーフモードで起動しなおしてアクセス権を設定し直すみたいです。
ライブラリの位置は、実行する環境によって変えてください。結論から言うと、Express Editionでコンパイルする場合は、Xerces、Xalan、QTのライブラリは必要ではありませんでした。
そして、env.batを実行してからkmkを実行します。
env.bat
kmk
このとき、kBuildのりビジョン3以前では、自分のPCでは、Cygwinがインストールしてあるためkmkを実行しようとするとエラーになってしまいました。そこで、VirtualBoxのサイトの説明にある通りCygiwn1.dllをkBuildbinx86.bincygwin1.dllにコピーしたらコンパイルが始まりました。また、途中yasmを使うところで、"アクセスが拒否されました”と表示されてコンパイルが止まってしまいました。そこで、一旦vboxtoolswin.x86binフォルダを別のフォルダに移動して、同じ場所にコピーしなおしました。すると、yasmが実行可能になりました。
以上で、コンパイルは終了しました。
cd outwin.x86debugbin
VBoxBFE.exe -cdrom Knoppix.iso -boot d
で動きました。-boot dを指定しないとCD-ROMから起動しないです。VisualC++ Express Editionを使っているため他のGUIのプログラムは作られません。また、comregister.cmdとかないのでする必要がありません。実際のところQTとかのライブラリはVBoxBFE.exeのみでは必要ありませんでした。
SUPUninstall
SUPInstall
で、カーネルドライバのアンインストールとインストールができるようですが、まだ試していません。
以上で、VisualC++ Express Editionを使ってVirtualBoxを作ってみたのでした。

Pocket

「WindowsホストでのVirtualBoxの作り方」への2件のフィードバック

  1. configure.vbsのlib/dynamic/qt-mt33*.libとなっているところを
    lib/dynamic/qt-mt3*.libに変更してqt3のlibファイルをdynamicに丸ごとコピーしてみたらどうでしょうか
    私の場合は普通にVirtualBOX.exeが出来上がったものなんで…
    toolkitにDDKのファイル混ぜた変な環境ですが(汗

  2. コメントありがとうございます。
    確かにそのほうがいいですね。追記させていただきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください