用VS2005编译JVM

VC++2005编译器和Lib相对VC++2003做了不少改动,因此编译JVM代码的时候需要作一些修改。
先读 这个。 
一、hotspot\build\windows\makefiles\compile.make
    Line51:CPP_FLAGS=/nologo /W3 /WX
    改  为:CPP_FLAGS=/nologo /W3 /WX /D "_CRT_SECURE_NO_DEPRECATE=1" /D "_CRT_NONSTDC_NO_DEPRECATE=1"
 
    即增加_CRT_SECURE_NO_DEPRECATE 和 _CRT_NONSTDC_NO_DEPRECATE 的宏定义
 

二、hotspot\src\os\win32\vm\perfMemory_win32.cpp
    Line 546:   char* first_colon = strchr(path, ':');
    改    为:  const char* first_colon = strchr(path, ':');
 

下面的三、四点我不知道错误原因,简单地修改了代码,让编码通过。
 
三、hotspot\src\share\vm\runtime\vm_version.cpp
    Line226~Line228:
    return VMNAME " (" HOTSPOT_BUILD_VERSION ") for " OS "-" CPU
         ", built on " __DATE__ " " __TIME__
         " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER;
    出现编译错误:C4566
    原因是什么,我还不知道。我只是简单的把代码改为 return ""; 暂时让编译通过。
 
四、D:\temp\hotspot\src\share\vm\adlc\main.cpp
    Line 412~Line414:
    void *operator new( size_t size, int, const char *, int ) {
     return ::operator new( size );
    }
    出现编译错误:C2084
    原因是什么我也不知道,我把这三行代码注释掉,暂时让编译通过。

你可能感兴趣的:(jvm,windows,OS,vc++)