VirtualBox4.0.0

  • 投稿日:
  • by
  • カテゴリ:



OSE版とか、わけのわからん区別はなくなる?


3.2.12に続いてVS2005でビルドしようと思ったのですが。


とにかくビルドしてみる


手順は、いつもと同じこれ。


Building VirtualBox OSE 3.2.8 on Windows (use VS2005)


http://forum.virtualbox.org/viewtopic.php?f=10&p=155621


Qtとかは全部3.2.12のときのままにして、VirtualBoxだけビルド。


すぐにエラーでとまる。



c:\virtualbox-4.0.0_ose\src\vbox\runtime\common\misc\circbuf.cpp(101) : error C2220: 警告をエラーとして扱いました。'object' ファイルは生成されません。


c:\virtualbox-4.0.0_ose\src\vbox\runtime\common\misc\circbuf.cpp(101) : warning C4739: 変数 'cbSize' への参照はそのストレージ領域を超えています


c:\virtualbox-4.0.0_ose\src\vbox\runtime\common\misc\circbuf.cpp(111) : warning C4739: 変数 'cbSize' への参照はそのストレージ領域を超えています


c:\virtualbox-4.0.0_ose\src\vbox\runtime\common\misc\circbuf.cpp(138) : warning C4739: 変数 'uUsed' への参照はそのストレージ領域を超えています


c:\virtualbox-4.0.0_ose\src\vbox\runtime\common\misc\circbuf.cpp(163) : warning C4739: 変数 'cbOld' への参照はそのストレージ領域を超えています


c:\virtualbox-4.0.0_ose\src\vbox\runtime\common\misc\circbuf.cpp(182) : warning C4739: 変数 'cbSize' への参照はそのストレージ領域を超えています


c:\virtualbox-4.0.0_ose\src\vbox\runtime\common\misc\circbuf.cpp(208) : warning C4739: 変数 'cbOld' への参照はそのストレージ領域を超えています


kmk: *** [C:/VirtualBox-4.0.0_OSE/out/win.x86/release/obj/RuntimeR3/common/misc/circbuf.obj] Error 2



このwarningは、以下のようなマクロで出ている。



case 1: *(uint8_t *)(puRes) = ASMAtomicUoReadU8( (volatile uint8_t *)(void *)(pu)); break; \
case 2: *(uint16_t *)(puRes) = ASMAtomicUoReadU16((volatile uint16_t *)(void *)(pu)); break; \
case 4: *(uint32_t *)(puRes) = ASMAtomicUoReadU32((volatile uint32_t *)(void *)(pu)); break; \
case 8: *(uint64_t *)(puRes) = ASMAtomicUoReadU64((volatile uint64_t *)(void *)(pu)); break; \

めんどうなので、warning抑制で回避と。*1



#ifdef WIN32
#pragma warning(disable: 4739)
#endif

同じことを言ってる人は他にもいます。


http://forum.virtualbox.org/viewtopic.php?f=15&t=36971&p=165722&hilit=C4739&sid=c4bfdafbbb6081b2b33dd77bf2f818e2#p165722


細かい修正をすると、たどり着くのがこれ、



c:\virtualbox-4.0.0_ose\src\vbox\additions\winnt\graphics\display\wddm\VBoxUhgsmiBase.h(22) : fatal error C1083: include ファイルを開けません。'D3dkmthk.h': No such file or directory


・・・


c:\virtualbox-4.0.0_ose\src\vbox\additions\winnt\graphics\display\wddm\VBoxDispD3DCmn.h(19) : fatal error C1083: include ファイルを開けません。'd3d9types.h': No such file or directory


d3d9types.hの方は、VBoxDispD3DCmn.hで以下のようになっているので、コメントアウトを入れ替えた。*2



#include <d3d9types.h>


//#include <d3dtypes.h>



D3dkmthk.hの方は、DDK絡みであることは、ここを見ればわかる。


今使っているDDKよりも新しいものはVS2005では使えないので、行き止まり。


周辺検索


VirtualBoxのフォーラムを漁ると、すぐにこれが見つかりました。


OSE win32 compile: D3dkmthk.h missing


http://forums.virtualbox.org/viewtopic.php?f=15&t=37148&sid=bd2d3c040e3702f21b1c6f05ce830591


で、ほんとうかどうかよくわからないが興味深い情報はこちら。



someone from oracle has already said that the problem lies in the wddm drivers which won't make 4.0.0 final, but the latest free tools will be able to build virtualbox sometime in the 4.0.x timescale.


which i assume means vs2010 express and the latest wdk, directx sdk and platform sdk; gcc 4.5, mingw 1.0, binutils 2.2, openssl 1.0 etc.


most of the versions on the build instructions page are now not even available for download without some good hunting around ftp servers, its no wonder it doesn't build anymore.



ライセンス


よくわからないんですが、Additionでも書くような人は除いて、Win32でビルドする必要はない気がしますね。


やってないですが、Linuxホストだとあっさりビルドできるんでしょうし。


Win32版がほしけりゃバイナリを使えばよいのであって。



OSE版をソースからビルドしたバイナリは、商用利用可能


とかいう曲解をばらまいている輩がいる/いたんじゃないかと思ってみたり。*3


Licensing: Frequently Asked Questions


http://www.virtualbox.org/wiki/Licensing_FAQ



6.What exactly do you mean by personal use and academic use in the Personal Use and Evaluation License?


・・・


Well, you could ask each of your 500 employees to install VirtualBox but don't you think we deserve some money in this case? We'd even assist you with any issue you might have.


・・・えーと、500人の従業員にVirtualBoxをインストールするように頼んで、金払わないで済むと思う?・・・



個人的には50人くらいでも社会的なモラルとしてはNGだと思う。



VMware徹底入門 第2版

VMware徹底入門 第2版







*1:この手のマクロはどこかでブームになってる気がする。


*2:開発してる人もDX9とDX10が混ざってるんじゃないの?


*3:逆にバイナリを仕事で使ってはいけないという曲解もまた広まっているような。