本文正在改进中(目前仅有MS Windows部分,其他OS部分会逐步加入)
参考:http://harmony.apache.org/quickhelp_contributors.html
- 设置环境变量APR_ICONV_PATH=subversion安装目录/iconv
- 设置环境变量Ant_Home=安装目录
- %Ant_Home%/bin加入到path
- 可以有两种方法下载
方法一:
- 在你的工作目录下,执行命令:
svn co https://svn.apache.org/repos/asf/harmony/enhanced/trunk
则会创建trunk子目录,并从subvision server取得一些文件复制在该trunk目录中,在该trunk目录下同时创建working_vm, working_classlib, working_jdktools目录;
- 修改trunk/build.xml文件,将其中的第314行和325行注释起来,即:
<!--arg line="-r${svn.revision}"/--> 保存修改的文件;
- 在你的工作目录下,执行以下命令:
cd trunk
ant populate_source
- 在你的工作目录下,执行命令:
方法二:
- 下载classlib到working_classlib目录
svn co https://svn.apache.org/repos/asf/harmony/enhanced/classlib/trunk
- 下载drlvm到working_vm目录
svn co https://svn.apache.org/repos/asf/harmony/enhanced/drlvm/trunk
- 下载classlib到working_classlib目录
- 安装Visual Studio .NET 2003,假设安装在C:\Program Files\Microsoft Visual Studio .NET 2003\目录下
- 构筑(build,指编译连接生成目标文件)classlib
- 设置环境变量ANT_OPTS=-Xms512M -Xmx512M
- 从.Net中找到MSVCR71.dll文件(一般在C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE下)复制到working_classlib目录的depends\libs\windows.x86中
- 进入到放置working_classlib的目录下,键入ant fetch-depends,如果成功会看到SUCCESSFUL字样,如果是FAILED则说明失败,再继续往下做之前必须先把这个问题解决;
- 一般情况下,根据错误提示信息,可以大致判断问题的原因,比如ANT_OPTS中没有设置网络proxy,或可以自己手工下载需要的文件。
- 如果自己无法解决,可以到Apache Harmony的mailing list发消息询问。会有很多专家热心提供帮助。
- 将working_classlib目录的depends\jars\ecj_3.2 folder\ecj_3.2.jar文件复制到%Ant_Home%/lib
- 将C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\Include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include加到环境变量INCLUDE中(需要找到win32.mak文件以及其他的头文件);
- 将C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE加到环境变量Path中(用于查找cl.exe)
- 将C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\lib加到环境变量Lib中
- 进入到working_classlib目录,键入ant,如果成功会看到SUCCESSFUL字样,如果是FAILED则说明失败,就不要继续往下做了
- build drlvm
- 设置环境变量JAVA_HOME=c:\java\jdk1.5.0\jre;
- 设置环境变量CXX=msvc;或者COMPILER_CFG_SCRIPT=C:\Program Files\Microsoft Visual Studio .NET2003\Common7\Tools\vsvars32.bat; 设置编译模式BUILD_CFG =release或BUILD_CFG =debug
- 进入working_vm\build目录,执行
- cp drlvm.properties.example drlvm.properties
- 执行build.bat update,该过程需要下载很多文件,由于一些网址可能是错误的,所以会失败。解决办法:更新working_vm/build/make/win.properties文件,将其中的http://www.reverse.net/pub/apache替换为http://www.apache.org/dist。再执行build update,如果成功会看到SUCCESSFUL字样。
- 键入build, 如果成功会看到SUCCESSFUL字样
- 第一次会失败,原因是因为找不到serializer.jar,到XALAN包下找到它,将其拷贝到trunk\build\make\tmp目录下
在build的过程中,还会遇到java文件的错误,working_vm\vm\vmcore\src\kernel_classes\javasrc\java\lang\reflect下的ReflectExporter.java文件有问题,将checkMemberAccess方法的声明部分改为:
{{{public void checkMemberAccess(Class<?> callerClass, Class<?> declaringClass,
Class<?> runtimeClass, int memberModifiers)}}}
- build成功后,在\trunk\build\win_ia32_msvc_release\deploy\jre\bin目录下会生成java.exe可执行文件,将其加入到path目录下,即可使用drlvm了
- 最后,如果你希望阅读这些软件的自带文档,可以安装doxygen-1.4.7,然后到某个目录下,如working_classlib/doc,输入命令:ant doxygen 得到自动生成的doxygen格式的文档。
(Contributors: 张昱(yuzhang@ustc.edu.cn)、吴廷鹏(wutingpeng@mail.ustc.edu.cn)、付明(brightfu@ustc.edu))