通过做一些实验,我发现手头提供JDK源代码来进行一些更改,使用它等等通常很有用。因此,我决定下载并编译该野兽。 显然,这花了我一些时间,尽管我最初的想法是,它应该和运行make命令一样简单:)。 您可能会猜到,我发现这不是一项微不足道的任务,并且为了简化以后的生活,保留一些有关我正在做的事情的记录将非常有用。

以下是我要做的步骤。 我认为计算机已经安装了Visual Studio 2010。 我觉得Express版本应该可以正常工作,但是我还没有尝试过。

  1. 安装cygwin。 确保已安装此处列出的所有软件包,其中一些默认情况下未安装。 以防万一,这是该表的副本,但建议与主源进行验证:

    二进制名称 类别 描述
    可执行文件 开发 Binutils GNU汇编器,链接器和二进制实用程序
    制作工具 开发 使 为CYGWIN构建的'make'实用程序的GNU版本。
    可执行文件 口译员 m4 传统Unix宏处理器的GNU实现
    cpio.exe 实用程序 cpio 一个管理文件存档的程序
    gawk.exe 实用程序 awk 模式导向的扫描和处理语言
    文件 实用程序 文件 使用“魔术”数字确定文件类型
    压缩文件 封存 压缩 打包和压缩(存档)文件
    解压缩文件 封存 解压缩 提取ZIP档案中的压缩文件
    免费版 系统 ps 显示系统中的可用和已用内存量

    不要忘记将cygwin的'bin'文件夹添加到PATH中。

  2. 从此处安装Mercurial并将“ hg”添加到PATH。
  3. 安装用于Windows 7和.NET Framework 4的Microsoft Windows SDK 。
  4. 安装DirectX SDK 。 JDK需要v9.0,但我很难找到它。 所以我决定不打扰并安装最新的。 似乎工作正常。
  5. Bootstrap JDK是构建所必需的。 碰巧我使用了JDK6,但是假设任何> JDK6的版本都不会出现问题。
  6. 下载并安装Ant 。 我使用的是1.8.2版本。 将Ant添加到PATH。
  7. 结帐来源。 由于多种原因,它是最复杂的部分。 “ 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

    希望现在您有资源并且可以有所帮助:)

  8. 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)。 这意味着您还需要下载源代码。

    如果您不是在寻找简单的解决方案,而是想自己编译这些二进制文件,请按照以下说明进行操作:

    1. 从这里下载make 3.82并解压缩。 找到“ config.h.W32”并取消注释行,定义为“ HAVE_CYGWIN_SHELL”。 在Visual Studio中打开make_msvc_net2003.sln解决方案,选择“发布”配置并进行构建。 在“发布”文件夹中,您将获得“ make_msvc.net2003.exe”,并将其重命名为“ make.exe”。
    2. 现在编译FreeType:
      1. 从此处下载FreeType v.2.4.7的源。
      2. 将其解压缩到某个位置,然后在Visual Studio中打开“ \ builds \ win32 \ vc2010 \ freetype.sln”。
      3. 转到项目属性(在项目树中的项目上单击鼠标右键),然后在“配置属性/常规/配置类型”中选择“动态库(.ddl)”,然后将输出重命名为“ freetype”。
      4. 更新ftoption.h,添加以下两行:
        #定义FT_EXPORT(x)__declspec(dllexport)x
        #定义FT_BASE(x)__declspec(dllexport)x
      5. 进行构建,您将在objs \ win32 \ vc2010中获得dll和lib。
      6. 不要忘记为“ ALT_FREETYPE_LIB_PATH”和“ ALT_FREETYPE_HEADERS_PATH”变量分配适当的值(请参阅步骤13)。
  9. 我在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
  10. 复制“ msvcr100.dll”到以下目录:
    cp /cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 10.0/Common7/Packages/Debugger/X64/msvcr100.dll ./drops/
  11. 确保Windows之前的cygwin的“ find.exe”在PATH中。 最简单的方法是将其复制到“ openjdk7 / bin”,然后在当前PATH的开头进行设置。
  12. 创建一个类似于以下文件的批处理文件。 不要忘记适当地更新路径:
    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
  13. 运行批处理文件。 现在,您已经完全配置了环境,可以开始构建了。 运行“ 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。

  14. 喝咖啡,茶或您想要的任何东西,然后大约一个小时后,您应该会看到类似以下的内容:
    #-- 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相关推荐

  1. 构建openjdk镜像_在Windows上构建OpenJDK

    构建openjdk镜像 通过做一些实验,我发现手头提供JDK源代码来进行一些更改,使用它等等通常很有用.因此,我决定下载并编译该野兽. 显然,这花了我一些时间,尽管我最初的想法是,它应该和运行make ...

  2. 从零开始在Windows上构建Android版的Tensorflow Lite

    文章目录 第一步:获取源代码 1. 工具:Git 2. 下载代码 第二步:了解代码 第三步:工具准备 1. Git 2. NDK 3. CMake 4. Python 3 5. Patch 第四步:环 ...

  3. 在Windows上运行-XX:CompileCommand

    HotSpot JVM提供了几个与即时 ( JIT )编译有关的命令行参数. 在本文中,我介绍了开始应用命令行标志-XX:CompileCommand所需的步骤,以查看对单个方法执行的即时编译. JI ...

  4. python:在Windows上使用 Python

    python:在Windows上使用 Python 4.1. 完整安装程序 4.2. Microsoft Store包 4.3. nuget.org 安装包 4.4. 可嵌入的包 4.5. 替代捆绑包 ...

  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 ...

  6. 如何在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 ...

  7. OpenCASCADE:Windows平台上构建OCCT使用的第三方库

    OpenCASCADE:Windows平台上构建OCCT使用的第三方库 OpenCASCADE:Windows平台上构建OCCT使用的第三方库 Tcl/Tk 从源安装:Tcl 从源安装:Tk Free ...

  8. Jenkins简介及在Windows上的简单使用示例

    Jenkins是一款开源CI(Continuous Integration,持续集成)&CD(Continuous Delivery,持续交付)软件,用于自动化各种任务,包括构建.测试和部署软 ...

  9. 如何在Windows上做Python开发?微软出了官方教程(附链接)

    来源:机器之心 本文附教程,建议阅读5分钟. 本文为你分享微软最近发布的关于在Windows上做Python开发的一系列官方教程. 在Windows上做Python开发太痛苦?微软最近发布了一系列官方 ...

最新文章

  1. search string iteration
  2. linux cat 进程,Linux下CAT程序的C实现
  3. Python学习日记day4 字符编码
  4. Centos/Red Hat6.8 安装、配置、启动Gitlab (外网环境)
  5. idea导入maven项目依赖报错_解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?
  6. 常微分方程第三版_常微分方程:(第六章)非线性微分方程:5节
  7. 面对压力,我们可以做什么?
  8. 联想服务器RD450 配置RAID5阵列图文方法
  9. Python基础学习2--字符串
  10. Django自身安全机制-XSS和CSRF
  11. 模拟银行叫号系统(c代码)
  12. 线性同余法随机数生成
  13. html 安卓解锁,【华为手机解账户锁教程】手撕篇3 完美解锁华为EMUI8.0,8.1,8.2系统...
  14. An动画优化之遮罩层动画
  15. 显卡的优化以提高计算机性能作用,显卡优化,详细教您如何设置NVIDIA(英伟达)显卡玩游戏性能更高...
  16. 线性代数——对向量的线性组合中的“线性”的理解
  17. FTP服务器异地备份文件,ftp异地备份
  18. 浅析微信头脑王者答题小程序源码功能模块与价格之间关系
  19. 连续函数的运算与初等函数的连续性——“高等数学”
  20. Taproot升级在即!门限签名技术将给数字钱包带来什么?

热门文章

  1. linux虚拟机tomcat上部署web项目的常用命令
  2. 请求对象Request
  3. jep290涉及jdk版本_JDK 14 / JEP 305模式匹配“ Smart Casts”实例
  4. lombok var_使用var,Lombok和Fluxtion轻松处理事件
  5. nutshell_Nutshell中的Java 8语言功能-第1部分
  6. 服务器编写_编写下载服务器。 第六部分:描述您发送的内容(内容类型等)...
  7. javafx显示image_JavaFX技巧20:有很多要显示的吗? 使用画布!
  8. vue 脚手架测试环境_关于单元测试脚手架的几点思考
  9. 装饰器模式java_Java 8的装饰器模式
  10. 最新的20多个JMS面试问答(2020)