`
p2p2500
  • 浏览: 11098 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

使用VS2010构建HotSpot工程

阅读更多
1. 下载OpenJDK7的源码:
     http://download.java.net/openjdk/jdk7
     http://download.java.net/openjdk/
    
2. 环境配置
    ▶a. 安装VS2010,并将其添加到PATH环境变量中
          例:PATH=XX\Microsoft Visual Studio 10.0\VC\bin;%PATH%
    ▶b. 设置JAVA_HOME环境变量(使用JDK6u45 版本过高会出现错误)
    ▶c. 安装Cygwin.
    ▶d. 解压的OpenJDK源码路径不要包含中文以及其他符号(如:路径中含有(++)符号).

3. 创建HotSpot的VS2010工程
    ▶a. 运行dos命令行,执行vcvars32.bat命令设置VS2010环境
    ▶b. 进入%OPENJDK_HOME%/hotspot/make/windows/
        执行: create.bat %JAVA_HOME%
     ......
        Writing .vcxproj file: D:\JDK\testjdk\openjdk\hotspot\build\vs-i486\jvm.vcxproj Done.
        Writing .vcxproj.filters file: D:\JDK\testjdk\openjdk\hotspot\build\vs-i486\jvm.vcxproj.filters Done.
        Writing .vcxproj.user file: D:\JDK\testjdk\openjdk\hotspot\build\vs-i486\jvm.vcxproj.user Done.

        输出如上信息代表hotspot编译成功。
    ▶c. 打开VS2010,将%OPENJDK_HOME%/hotspot/build/build\vs-i486/jvm.vcxproj或者直接双击jvm.vcxproj打开HotSpot工程。
    ▶d. 导入成功后,F7编译HotSpot工程,但出现如下错误:
        --------------------------------------------------------------------------------------------------------
 1>Link:1> Creating library C:\openjdk\hotspot\build\vs-i486\compiler1\debug\jvm.lib and object C:\openjdk\hotspot\build\vs-i486\compiler1\debug\jvm.exp
        1>os_windows.obj : error LNK2019: unresolved external symbol _EnumProcessModules@16 referenced in function "public: static int __cdecl os::PSApiDll::EnumProcessModules(void *,struct HINSTANCE__ * *,unsigned long,unsigned long *)" (?EnumProcessModules@PSApiDll@os@@SAHPAXPAPAUHINSTANCE__@@KPAK@Z)
        1>os_windows.obj : error LNK2019: unresolved external symbol _GetModuleFileNameExA@16 referenced in function "public: static unsigned long __cdecl os::PSApiDll::GetModuleFileNameExA(void *,struct HINSTANCE__ *,char *,unsigned long)" (?GetModuleFileNameExA@PSApiDll@os@@SAKPAXPAUHINSTANCE__@@PADK@Z)
        1>os_windows.obj : error LNK2019: unresolved external symbol _GetModuleInformation@16 referenced in function "public: static int __cdecl os::PSApiDll::GetModuleInformation(void *,struct HINSTANCE__ *,struct _MODULEINFO *,unsigned long)" (?GetModuleInformation@PSApiDll@os@@SAHPAXPAUHINSTANCE__@@PAU_MODULEINFO@@K@Z)
        1>C:\openjdk\hotspot\build\vs-i486\compiler1\debug\jvm.dll : fatal error LNK1120: 3 unresolved externals


        原因是缺少psapi.lib库文件,将其添加到:Linker->Input->Additional Dependencies.
    ▶4. 右击jvm选择属性(properties),选择Debugging选项:
         a. Command 代表编译出来的调试启动器hotspot.exe(%OPENJDK_HOME%/hotspot/build/build\vs-i486\compiler1\debug\hotspot.exe,另外还有jvm.dll)
         b. Command Arguments 填写相应的java class。如:-cp <dir> HelloWorld
    ▶5. 由于我们编译仅仅是HotSpot,所以需要一个外挂的JDK提供如:rt.jar的资源,这个外挂的JDK可以在%OPENJDK_HOME%/hotspot/build/build\vs-i486\compiler1\debug\jdkpath.txt中设置JAVA_HOME。

4. 在java.c中设置断点,F10(F5)就可以调试了。

分享到:
评论

相关推荐

    OpenJDK8U-jdk_x64_windows_hotspot_8u302b08.zip

    OpenJDK8U-jdk_x64_windows_hotspot_8u302b08.zip是一个针对Windows操作系统的64位版本的OpenJDK 1.8更新302(8u302)的软件包,其中包含了HotSpot虚拟机。OpenJDK是Java Development Kit(JDK)的一个开源实现,由...

    深入Hotspot源码与Linux内核理解NIO与Netty线程模型.rar

    这些知识点在构建高性能、高并发的网络应用中至关重要。 首先,Hotspot是Oracle JDK中的默认Java虚拟机,它负责执行Java应用程序。Hotspot源码分析可以帮助我们理解Java代码如何被编译、优化和运行。其中,JVM的...

    hotspot_davinci:达芬奇的热点修改

    项目的描述虽然简洁,但暗示了这是一个与代码性能优化相关的工程。开发者可能通过分析代码执行情况,找出性能瓶颈,然后对这些热点进行优化,以提高整体程序的运行速度。这可能包括调整循环结构,减少函数调用开销,...

    JAVA性能优化权威指南

    Java性能优化圣经!Java之父重磅推荐! 本书由曾任职于Oracle/Sun的性能优化专家编写,系统而... 正如维基百科所言:“科学(来自拉丁文scientia,意思是‘知识’)是以对世界可证实的解释和预见来构建和组织知识的系统

    KMAHotspot:适用于Windows的Hotspot Mini Code C

    项目名称中的"KMA"可能代表开发者或项目团队的缩写,而"Hotspot"则直接指代无线网络热点功能。这个工具的独特之处在于它的小巧和简洁,使用C语言编写意味着其运行效率高,对系统资源的需求相对较低,适合于各种配置...

    desugar_jdk_libs,.zip

    标签"开源项目"意味着这是一个可以公开查看、使用、修改和分发的软件项目,遵循一定的开源许可证,比如GPL、Apache License或MIT License等。开源项目的特性使得开发者能够参与到代码的改进中来,共同推动技术的发展...

    Visual C++多媒体开发指南配套源码

    《Visual C++多媒体开发指南配套源码》是一个针对使用Visual C++进行多媒体应用程序开发的实践资源集合。这个压缩包包含了多个APS(ActiveX Project Source)文件以及一些位图资源,这些文件是Visual C++工程项目的...

    java版五子棋游戏源码-JGomoku:北京航空航天大学Java程序设计语言课程项目

    java版五子棋游戏源码 JGomoku工程文档 总体概述 功能概述 JGomoku是一个五子棋程序,可以实现人人...软件使用了Java技术并采用Ant进行构建(Build),因此,构建时依赖Java以及Ant。 构建需要将工作目录切换到含有build

    JDK1.6 新特性 做服务器

    在基于MyEclipse的工程环境中,这些特性可以帮助开发者更好地构建和部署服务器应用,例如轻松运行一个Tomcat服务器。在实际工作中,利用这些新特性,可以提高开发者的生产力,同时提升应用程序的性能和稳定性。

    走进Java1

    随着时间的推移,Java逐渐演变为一个成熟、广泛使用的编程语言,应用领域涵盖了桌面应用、Web应用、企业级应用、移动应用等。 在Android平台上,Java语言也有其特殊的应用,即Dalvik虚拟机。Dalvik是Google针对移动...

    Openjdk7master.zip

    在 Ubuntu 系统上,你可以使用 `make` 命令来编译 OpenJDK 7 源码,这将帮助你了解构建过程和依赖关系。同时,配合调试工具(如 gdb)和 IDE(如 Eclipse 或 IntelliJ IDEA),可以更深入地探索源码。 总之,...

    编译技术大纲

    **编译技术大纲** 在计算机科学领域,编译技术是至关重要的一个部分,它涉及到将高级编程语言...通过实际编写编译器的各个组件,学生可以更好地理解和掌握编译过程,为未来在软件工程领域的深度发展奠定坚实的基础。

    jvm_book:《深入理解Java虚拟机(第3版)》样例代码&勘误

    JetBrains的远程方案,不用纠结如何搭建IDE环境调试HotSpot源码了,如对您有用,望不吝给个Star  本工程为《深入理解Java虚拟机(第3版)》书中的样例代码,以方便读者自行测试。部分代码需要在特定的虚拟机版本、...

    大工软件学院编译原理复习资料大全

    通过深入学习这些知识点,大连理工大学软件学院的学生将能够理解和构建自己的编译器,进一步提升他们的编程技能,同时对软件工程有更全面的理解。这些复习资料将为学生提供宝贵的指导,帮助他们在考试中取得优异成绩...

    比较:应用比较

    6. 技术趋势:随着技术的发展,比如Serverless、反应式编程等,我们需要考虑Java应用是否能够适应这些新技术趋势,比如使用Quarkus支持Reactive Streams或使用Spring WebFlux构建反应式应用。 综上所述,"比较:...

    Java-source:Java源代码阅读

    总的来说,通过阅读Java-source项目中的源代码,开发者不仅可以深化对Java语言的理解,还能学习到软件工程的最佳实践,这对个人职业发展和参与开源项目具有重大意义。同时,这种实践也有助于培养解决问题的能力,...

    Compi1:Course_Compiladores_1

    这门课程可能是针对计算机科学或软件工程专业学生开设的,旨在帮助他们理解如何将高级语言转化为机器可执行的代码。 【描述】"Comp1 Course_Compiladores_1" 是对标题的简洁复述,暗示了这是课程的第一部分或者是一...

Global site tag (gtag.js) - Google Analytics