在Windows上构建OpenJDK
以下是我要做的步骤。 我认为计算机已经安装了Visual Studio 2010。 我觉得Express版本应该可以正常工作,但是我还没有尝试过。
- 安装cygwin。 确保已安装此处列出的所有软件包,其中一些默认情况下未安装。 以防万一,这是该表的副本,但建议与主源进行验证:
二进制名称 类别 包 描述 可执行文件 开发 Binutils GNU汇编器,链接器和二进制实用程序 制作工具 开发 使 为CYGWIN构建的'make'实用程序的GNU版本。 可执行文件 口译员 m4 传统Unix宏处理器的GNU实现 cpio.exe 实用程序 cpio 一个管理文件存档的程序 gawk.exe 实用程序 awk 模式导向的扫描和处理语言 文件 实用程序 文件 使用“魔术”数字确定文件类型 压缩文件 封存 压缩 打包和压缩(存档)文件 解压缩文件 封存 解压缩 提取ZIP档案中的压缩文件 免费版 系统 ps 显示系统中的可用和已用内存量 不要忘记将cygwin的'bin'文件夹添加到PATH中。
- 从此处安装Mercurial并将“ hg”添加到PATH。
- 安装用于Windows 7和.NET Framework 4的Microsoft Windows SDK 。
- 安装DirectX SDK 。 JDK需要v9.0,但我很难找到它。 所以我决定不打扰并安装最新的。 似乎工作正常。
- Bootstrap JDK是构建所必需的。 碰巧我使用了JDK6,但是假设任何> JDK6的版本都不会出现问题。
- 下载并安装Ant 。 我使用的是1.8.2版本。 将Ant添加到PATH。
- 结帐来源。 由于多种原因,它是最复杂的部分。 “ hg”不是特别稳定,因此某些应该由我的脚本完成的操作是手动完成的。
因此,要在命令行中开始运行此命令:
hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u <some_folder>\openjdk7'
这应该下载带有一些帮助脚本的根文件夹。
然后在cygwin中,转到刚刚创建的“ openjdk7”文件夹并运行“ get_source.sh”。 “ get_source.sh”可能会失败或只是挂起(这正是我所发生的事情)。 如果是这样,则您可以尝试使用“ –pull”标志(元数据的拉协议)。 我不确定为什么,但这对我有所帮助。 不幸的是,脚本不是以非常友好的方式编写的,并且无法将任何“ hg”参数传递给源检索脚本。 因此,您需要转到“ make \ scripts \ hgforest.sh”并将“ –pull”添加到“ hg clone”的每次调用中。
而且即使添加“ -pull”后仍然失败,嗯……只要放弃并手动运行以下命令:
hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/corba corba hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot hotspot hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/jaxp jaxp hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/jaxws jaxws hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/jdk jdk hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/langtools langtools
希望现在您有资源并且可以有所帮助:)
- Build需要一些外部二进制文件和一个可在Windows下运行的'make.exe'版本。 cygwin随附的'make'并没有真正起作用,因为路径名中的驱动器字母存在一些问题。
接下来是我们需要编译几个文件。 一种是“ make.exe”的固定版本。 另一个是FreeType库,仅可作为源下载。
如果您不希望编译所有这些东西,而只想轻松编译JDK,则建议从此处下载二进制文件(这是我的云端硬盘)。 将“ make.exe”解压缩到“ openjdk7 / bin”中。 请注意,该软件包中的“ make.exe”非常老,需要cygintl-3.dll,当前cygwin并未提供。 要修复此问题,只需复制cygintl-8.dll-> cygintl-3.dll。
Freetype lib和dll必须放在ALT_FREETYPE_LIB_PATH conf变量引用的文件夹中(请参阅步骤13)。 另外,仍然需要一些Freetype标头,并通过make通过ALT_FREETYPE_HEADERS_PATH变量找到它们(请参见步骤13)。 这意味着您还需要下载源代码。如果您不是在寻找简单的解决方案,而是想自己编译这些二进制文件,请按照以下说明进行操作:
- 从这里下载make 3.82并解压缩。 找到“ config.h.W32”并取消注释行,定义为“ HAVE_CYGWIN_SHELL”。 在Visual Studio中打开make_msvc_net2003.sln解决方案,选择“发布”配置并进行构建。 在“发布”文件夹中,您将获得“ make_msvc.net2003.exe”,并将其重命名为“ make.exe”。
- 现在编译FreeType:
- 从此处下载FreeType v.2.4.7的源。
- 将其解压缩到某个位置,然后在Visual Studio中打开“ \ builds \ win32 \ vc2010 \ freetype.sln”。
- 转到项目属性(在项目树中的项目上单击鼠标右键),然后在“配置属性/常规/配置类型”中选择“动态库(.ddl)”,然后将输出重命名为“ freetype”。
- 更新ftoption.h,添加以下两行:
#定义FT_EXPORT(x)__declspec(dllexport)x
#定义FT_BASE(x)__declspec(dllexport)x - 进行构建,您将在objs \ win32 \ vc2010中获得dll和lib。
- 不要忘记为“ ALT_FREETYPE_LIB_PATH”和“ ALT_FREETYPE_HEADERS_PATH”变量分配适当的值(请参阅步骤13)。
- 我在javadoc生成方面遇到了一些问题,但由于OutOfMemory失败。 为了修复它,我不得不更改“ openjdk7 \ jdk \ make \ docs \ Makefile”。
这段代码:ifeq ($(ARCH_DATA_MODEL),64)MAX_VM_MEMORY = 1024 else ifeq ($(ARCH),universal)MAX_VM_MEMORY = 1024 elseMAX_VM_MEMORY = 512 endif
必须用以下内容替换:
ifeq ($(ARCH_DATA_MODEL),64)MAX_VM_MEMORY = 1024 else ifeq ($(ARCH),universal)MAX_VM_MEMORY = 1024 elseMAX_VM_MEMORY = 1024 endif
- 复制“ msvcr100.dll”到以下目录:
cp /cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 10.0/Common7/Packages/Debugger/X64/msvcr100.dll ./drops/
- 确保Windows之前的cygwin的“ find.exe”在PATH中。 最简单的方法是将其复制到“ openjdk7 / bin”,然后在当前PATH的开头进行设置。
- 创建一个类似于以下文件的批处理文件。 不要忘记适当地更新路径:
ALT_BOOTDIR=C:/Stuff/java_libs/jdk1.6.0_25 ANT_HOME=C:/Stuff/java_libs/apache-ant-1.8.2 JAVA_HOME= CLASSPATH= PATH=C:/Stuff/openjdk7/bin;%PATH% ALLOW_DOWNLOADS=true ALT_MSVCRNN_DLL_PATH=C:/Stuff/java_libs/openjdk7/dropsC:\WINDOWS\system32\cmd.exe /E:ON /V:ON /K 'C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd' /Release /xp /x86
- 运行批处理文件。 现在,您已经完全配置了环境,可以开始构建了。 运行“ bash”,然后在shell中执行“ make”:
make ARCH_DATA_MODEL=32 ALT_OUTPUTDIR=C:/Users/Stas/Stuff/java_libs/openjdk7/output_32 ALT_FREETYPE_LIB_PATH=C:/Users/Stas/Stuff/java_libs/openjdk7/freetype-2.4.7/objs/win32/vc2010 ALT_FREETYPE_HEADERS_PATH=C:/Users/Stas/Stuff/java_libs/openjdk7/freetype-2.4.7/include ALT_BOOTDIR=C:/Users/Stas/Stuff/java_libs/jdk1.6.0_25 ALT_DROPS_DIR=c:/OpenJDK/ALT_DROPS_DIR ALT_DROPS_DIR=C:/Users/Stas/Stuff/java_libs/openjdk7/drops HOTSPOT_BUILD_JOBS=4 PARALLEL_COMPILE_JOBS=4 2>&1 | tee C:/Stuff/java_libs/openjdk7/output_32.log
这将开始构建32位JDK。
- 喝咖啡,茶或您想要的任何东西,然后大约一个小时后,您应该会看到类似以下的内容:
#-- Build times ---------- Target all_product_build Start 2012-09-01 23:08:55 End 2012-09-01 23:55:48 00:02:35 corba 00:06:46 hotspot 00:00:30 jaxp 00:00:51 jaxws 00:35:30 jdk 00:00:37 langtools 00:46:53 TOTAL -------------------------
参考:来自Stas博客博客的JCG合作伙伴 Stanislav Kobylansky在Windows上构建OpenJDK 。
翻译自: https://www.javacodegeeks.com/2012/09/stass-blog-building-openjdk-on-windows.html
在Windows上构建OpenJDK相关推荐
- 构建openjdk镜像_在Windows上构建OpenJDK
构建openjdk镜像 通过做一些实验,我发现手头提供JDK源代码来进行一些更改,使用它等等通常很有用.因此,我决定下载并编译该野兽. 显然,这花了我一些时间,尽管我最初的想法是,它应该和运行make ...
- 从零开始在Windows上构建Android版的Tensorflow Lite
文章目录 第一步:获取源代码 1. 工具:Git 2. 下载代码 第二步:了解代码 第三步:工具准备 1. Git 2. NDK 3. CMake 4. Python 3 5. Patch 第四步:环 ...
- 在Windows上运行-XX:CompileCommand
HotSpot JVM提供了几个与即时 ( JIT )编译有关的命令行参数. 在本文中,我介绍了开始应用命令行标志-XX:CompileCommand所需的步骤,以查看对单个方法执行的即时编译. JI ...
- python:在Windows上使用 Python
python:在Windows上使用 Python 4.1. 完整安装程序 4.2. Microsoft Store包 4.3. nuget.org 安装包 4.4. 可嵌入的包 4.5. 替代捆绑包 ...
- wsl 上使用docker_首先通过在WSL和Docker中进行测试,将ASP.NET Core从Windows上的Azure应用服务迁移到Linux
wsl 上使用docker I updated one of my websites from ASP.NET Core 2.2 to the latest LTS (Long Term Suppor ...
- 如何在Windows上安装Angular:Angular CLI,Node.js和构建工具指南
In this tutorial, we'll learn how to install Angular CLI in Windows and use it to create an Angular ...
- OpenCASCADE:Windows平台上构建OCCT使用的第三方库
OpenCASCADE:Windows平台上构建OCCT使用的第三方库 OpenCASCADE:Windows平台上构建OCCT使用的第三方库 Tcl/Tk 从源安装:Tcl 从源安装:Tk Free ...
- Jenkins简介及在Windows上的简单使用示例
Jenkins是一款开源CI(Continuous Integration,持续集成)&CD(Continuous Delivery,持续交付)软件,用于自动化各种任务,包括构建.测试和部署软 ...
- 如何在Windows上做Python开发?微软出了官方教程(附链接)
来源:机器之心 本文附教程,建议阅读5分钟. 本文为你分享微软最近发布的关于在Windows上做Python开发的一系列官方教程. 在Windows上做Python开发太痛苦?微软最近发布了一系列官方 ...
最新文章
- search string iteration
- linux cat 进程,Linux下CAT程序的C实现
- Python学习日记day4 字符编码
- Centos/Red Hat6.8 安装、配置、启动Gitlab (外网环境)
- idea导入maven项目依赖报错_解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?
- 常微分方程第三版_常微分方程:(第六章)非线性微分方程:5节
- 面对压力,我们可以做什么?
- 联想服务器RD450 配置RAID5阵列图文方法
- Python基础学习2--字符串
- Django自身安全机制-XSS和CSRF
- 模拟银行叫号系统(c代码)
- 线性同余法随机数生成
- html 安卓解锁,【华为手机解账户锁教程】手撕篇3 完美解锁华为EMUI8.0,8.1,8.2系统...
- An动画优化之遮罩层动画
- 显卡的优化以提高计算机性能作用,显卡优化,详细教您如何设置NVIDIA(英伟达)显卡玩游戏性能更高...
- 线性代数——对向量的线性组合中的“线性”的理解
- FTP服务器异地备份文件,ftp异地备份
- 浅析微信头脑王者答题小程序源码功能模块与价格之间关系
- 连续函数的运算与初等函数的连续性——“高等数学”
- Taproot升级在即!门限签名技术将给数字钱包带来什么?
热门文章
- linux虚拟机tomcat上部署web项目的常用命令
- 请求对象Request
- jep290涉及jdk版本_JDK 14 / JEP 305模式匹配“ Smart Casts”实例
- lombok var_使用var,Lombok和Fluxtion轻松处理事件
- nutshell_Nutshell中的Java 8语言功能-第1部分
- 服务器编写_编写下载服务器。 第六部分:描述您发送的内容(内容类型等)...
- javafx显示image_JavaFX技巧20:有很多要显示的吗? 使用画布!
- vue 脚手架测试环境_关于单元测试脚手架的几点思考
- 装饰器模式java_Java 8的装饰器模式
- 最新的20多个JMS面试问答(2020)