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是一个针对Windows操作系统的64位版本的OpenJDK 1.8更新302(8u302)的软件包,其中包含了HotSpot虚拟机。OpenJDK是Java Development Kit(JDK)的一个开源实现,由...
这些知识点在构建高性能、高并发的网络应用中至关重要。 首先,Hotspot是Oracle JDK中的默认Java虚拟机,它负责执行Java应用程序。Hotspot源码分析可以帮助我们理解Java代码如何被编译、优化和运行。其中,JVM的...
项目的描述虽然简洁,但暗示了这是一个与代码性能优化相关的工程。开发者可能通过分析代码执行情况,找出性能瓶颈,然后对这些热点进行优化,以提高整体程序的运行速度。这可能包括调整循环结构,减少函数调用开销,...
Java性能优化圣经!Java之父重磅推荐! 本书由曾任职于Oracle/Sun的性能优化专家编写,系统而... 正如维基百科所言:“科学(来自拉丁文scientia,意思是‘知识’)是以对世界可证实的解释和预见来构建和组织知识的系统
项目名称中的"KMA"可能代表开发者或项目团队的缩写,而"Hotspot"则直接指代无线网络热点功能。这个工具的独特之处在于它的小巧和简洁,使用C语言编写意味着其运行效率高,对系统资源的需求相对较低,适合于各种配置...
标签"开源项目"意味着这是一个可以公开查看、使用、修改和分发的软件项目,遵循一定的开源许可证,比如GPL、Apache License或MIT License等。开源项目的特性使得开发者能够参与到代码的改进中来,共同推动技术的发展...
2. 热仿真平台构建工具:搭建热仿真平台通常需要依赖特定的软件工具,本文中提到的工具包括HotSpot、GEM5和McPAT。这些工具各自具备不同的功能和优势,共同构建了完整的热仿真流程。 3. HotSpot软件:HotSpot是一款...
在Eclipse中,可以创建一个新的C++项目,编写代码,然后通过Eclipse内置的构建系统(通常使用Makefile)进行编译。调试时,可以设置断点,单步执行,查看变量值,进行内存分析等,使得调试过程更加直观和高效。 ...
首先,Java作为一种广泛使用的编程语言,其跨平台特性依赖于JVM在各种硬件架构上的支持。RISC-V的开放性和模块化设计吸引了众多开发者和制造商,因此,为了让Java应用能在RISC-V设备上运行,必须有对应的JVM实现。...
3. **构建 OpenJDK**:使用相应的构建工具(如 `mkimage`)来构建 OpenJDK 7。这通常需要一个已经安装好的 JDK 环境以及一些必要的构建工具。 4. **安装 OpenJDK 7**:完成构建后,可以通过设置环境变量或使用包管理...
《Visual C++多媒体开发指南配套源码》是一个针对使用Visual C++进行多媒体应用程序开发的实践资源集合。这个压缩包包含了多个APS(ActiveX Project Source)文件以及一些位图资源,这些文件是Visual C++工程项目的...
java版五子棋游戏源码 JGomoku工程文档 总体概述 功能概述 JGomoku是一个五子棋程序,可以实现人人...软件使用了Java技术并采用Ant进行构建(Build),因此,构建时依赖Java以及Ant。 构建需要将工作目录切换到含有build
在基于MyEclipse的工程环境中,这些特性可以帮助开发者更好地构建和部署服务器应用,例如轻松运行一个Tomcat服务器。在实际工作中,利用这些新特性,可以提高开发者的生产力,同时提升应用程序的性能和稳定性。
模块化使得大型应用的构建、打包和部署更加可控,同时提高了运行时的性能和安全性。 2. **HTTP客户端API(Java.net.http)**:Java 11中新增了一个内置的HTTP客户端,提供非阻塞I/O支持,方便开发者进行HTTP/1.1和...
- **客户端设备配置**:连接基站需使用MikroTik无线路由设备、以太网接口、定向天线和低损耗馈线,确保与基站的稳定连接。 - **传输速度**:802.11b模式下2.4GHz频段的数据速率为11Mbps,实际吞吐量约5-6Mbps;802....
### PhoneME Feature VM ...通过遵循这些步骤,你可以成功地构建并运行 PhoneME Feature VM,为学习和开发基于 Java ME 的应用打下坚实的基础。希望这份文档能帮助你顺利完成学业项目,并在未来的职业生涯中有所作为。
随着时间的推移,Java逐渐演变为一个成熟、广泛使用的编程语言,应用领域涵盖了桌面应用、Web应用、企业级应用、移动应用等。 在Android平台上,Java语言也有其特殊的应用,即Dalvik虚拟机。Dalvik是Google针对移动...
Eclipse作为一个流行的Java集成开发环境,在附录中也得到了介绍,包括Eclipse的基本概要和构建工程中的协作问题。最后,对C++程序设计也进行了基础语法和面向对象方面的简要介绍,为理解Java与C++在面向对象方面的...
在 Ubuntu 系统上,你可以使用 `make` 命令来编译 OpenJDK 7 源码,这将帮助你了解构建过程和依赖关系。同时,配合调试工具(如 gdb)和 IDE(如 Eclipse 或 IntelliJ IDEA),可以更深入地探索源码。 总之,...
**编译技术大纲** 在计算机科学领域,编译技术是至关重要的一个部分,它涉及到将高级编程语言...通过实际编写编译器的各个组件,学生可以更好地理解和掌握编译过程,为未来在软件工程领域的深度发展奠定坚实的基础。