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

构建openjdk镜像

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

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

  1. 安装cygwin。 确保已安装此处列出的所有软件包,其中一些默认情况下未安装。 以防万一,这是该表的副本,但建议与主数据源进行验证:
    二进制名称 类别 描述
    可执行文件 开发 Binutils GNU汇编器,链接器和二进制实用程序
    制作工具 开发 使 为CYGWIN构建的'make'实用程序的GNU版本。
    可执行文件 口译员 m4 传统Unix宏处理器的GNU实现
    脚本文件 实用程序 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. 确保cygwin的“ find.exe”在Windows之前的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

构建openjdk镜像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html图像特征提取,图像识别之图像特征提取

图像识别之图像特征提取HOG特征&#xff1a;方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处置中用来停止物体检测的特征描绘子。它经过计算和统计图像部分区域的梯度方向直方图来构成特征。Hog特征分离SVM分类器曾经被普遍应用于图像辨认…

190. 颠倒二进制位

题目 代码 class Solution { public:uint32_t reverseBits(uint32_t n) {n(n>>16)|(n<<16);n((n&0xff00ff00)>>8)|((n&0x00ff00ff)<<8);n((n&0xf0f0f0f0)>>4)|((n&0x0f0f0f0f)<<4);n((n&0xcccccccc)>>2)|((n&am…

Linux--date命令 date命令

Linux--date命令 date命令 date命令的功能是显示和设置系统日期和时间。 该命令的一般格式为&#xff1a; date [选项] 显示时间格式&#xff08;以开头&#xff0c;后面接格式&#xff09; date 设置时间格式 命令中各选项的含义分别为&#xff1a; -d datestr, --date datest…

为某人命名以重新连接到您的服务器

在进行测试自动化时&#xff0c;通常需要知道当前计算机的名称&#xff0c;以提示另一台计算机连接到它&#xff0c;特别是在并行运行测试的情况下。 本周&#xff0c;我试图对服务器进行测试&#xff0c;以使其连接回在从属测试计算机上运行的WireMock服务器。 堆栈溢出的标准…

as转html5工具,将keras的h5模型转换为tensorflow的pb模型

背景&#xff1a;目前keras框架使用简单&#xff0c;很容易上手&#xff0c;深得广大算法工程师的喜爱&#xff0c;但是当部署到客户端时&#xff0c;可能会出现各种各样的bug&#xff0c;甚至不支持使用keras&#xff0c;本文来解决的是将keras的h5模型转换为客户端常用的tens…

暑假第六周

刘思翔来深圳玩&#xff0c;陪玩 转载于:https://www.cnblogs.com/cts1234/p/9664244.html

linux shell数据重定向(输入重定向与输出重定向)详细分析

在了解重定向之前&#xff0c;我们先来看看linux 的文件描述符。 linux文件描述符&#xff1a;可以理解为linux跟踪打开文件&#xff0c;而分配的一个数字&#xff0c;这个数字有点类似c语言操作文件时候的句柄&#xff0c;通过句柄就可以实现文件的读写操作。 用户可以自定义文…

计算机科学技术的教育应用论文,浅谈计算机科学技术在计算机教学中的应用论文...

计算机科学&#xff0c;研究计算机及其周围各种现象和规律的科学&#xff0c;亦即研究计算机系统结构、程序系统(即软件)、人工智能以及计算本身的性质和问题的学科。计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科&#xff0c;从抽象的算法分析、形式化语法…

socketserver和socket的补充(验证客户端合法性)

一、socket的补充 1、参数 socket.socket(familyAF_INET,typeSOCK_STREAM,proto0,filenoNone) 参数说明&#xff1a; family 地址系列应为AF_INET(默认值ipv4),AF_INET6(ipv6),AF_UNIX,AF_CAN或AF_RDS。 (AF_UNIX 域实际上是使用本地 socket 文件来通信) type 套接字类型应为…

使用Spring Boot和Spring Security验证JWT

对于我当前的项目&#xff0c;我将使用Spring Boot设置REST API &#xff08;最有可能使用BoxFuse运行&#xff09;。 为了能够使用API​​端点&#xff0c;应用程序将检查传入的请求是否具有较早提供的有效JWT令牌 &#xff08;由我信任的API服务提供&#xff09;。 为了实现…

怎么查看linux文件夹下有多少个文件

ls | wc -w是查看有多少个文件及文件夹ls | wc -c这个查看目录下多少个文件. 使用wc命令 具体通过wc --help 可以查看。如&#xff1a;wc -l filename 就是查看文件里有多少行 wc -w filename 看文件里有多少个word。 wc -L filename 文件里最长的那一行是多少个字…

[转]xargs详解

为什么要用xargs&#xff0c;问题的来源 在工作中经常会接触到xargs命令&#xff0c;特别是在别人写的脚本里面也经常会遇到&#xff0c;但是却很容易与管道搞混淆&#xff0c;本篇会详细讲解到底什么是xargs命令&#xff0c;为什么要用xargs命令以及与管道的区别。为什么要用x…

计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小

很多人都知道怎麽设置电脑桌面&#xff0c;可真正找到适合自己屏幕的可能很少&#xff0c;图片或大或小&#xff0c;小编为大家分享了设置桌面壁纸大小的方法&#xff0c;下面大家跟着小编一起来了解一下吧。设置桌面壁纸大小方法先查看自己电脑屏幕分辨率&#xff0c;方法&…

html5 clip,canvas中使用clip()函数裁剪方法

未使用裁剪绘制一个圆*{margin:0;padding:0;}html,body{width:100%;height:100%;overflow:hidden;background-color:#AFAFAF;}varcanvasdocument.getElementById(canvas),contextcanvas.getContext(2d);canvas.widthdocument.body.clientWidth;canvas.heightdocument.body.clie…

linux中管道符的简单使用

管道符&#xff0c;可以把两条命令连起来&#xff0c;具体来说有两种应用&#xff0c;如下&#xff1a; 1. 例如&#xff1a; ps aux | grep "media" 在 ps aux中的結果中查找media。 2. 例如&#xff1a; find . -name "*.cpp" | xargs grep "cl…

51 nod 1522 上下序列——序列dp

题目&#xff1a;http://www.51nod.com/onlineJudge/questionCode.html#!problemId1522 很好的思想。考虑从小到大一对一对填数&#xff0c;这样也能对它的大小限制做一些操作了。 因为从小到大&#xff0c;所以只能全填在左边、全填在右边、两边各填一个。记录左边填到了哪个位…

spring tiles_Spring MVC 3模板和Apache Tiles

spring tiles对于任何Web应用程序&#xff0c;有效的设计考虑因素是使用模板引擎&#xff08;或工具&#xff09;&#xff0c;并且由于具有Spring的“可插拔”特性&#xff0c;集成模板机制&#xff08;例如Apache Tiles&#xff09;确实要容易得多。 在这篇简单的文章中&#…

流程图用计算机if怎么写,if语句流程图

使用if语句实现单分支、两分支和使用switch语句实现多分支的程序程序1、if 语句有下面三种情况。第一种&#xff0c;条件成立就做。不成立就不做。if (条件)程序endif第二种&#xff0c;条件成立做“程序一”&#xff0c;不成立做“程序二”。不管条件成不成立都做。if (条件)程…

CENTOS 7 踢用户_从零学ELK系列(三):Centos安装Docker(超详细图文教程)

CSDN博客地址&#xff08;关注&#xff0c;点赞&#xff09;人工智能推荐GitHub&#xff08;Star,Fork,Watch&#xff09;【前言】为了更加真实的模拟生产部署环境&#xff0c;不仅需要Linux环境支持&#xff0c;而且ELK需要在不同的机器上部署&#xff1b;再重新装几台虚拟机&…

boost开发指南

C确实很复杂&#xff0c;神一样的0x不知道能否使C变得纯粹和干爽&#xff1f; boost很复杂&#xff0c;感觉某些地方有过度设计和太过于就事论事的嫌疑&#xff0c;对实际开发工作的考虑太过于理想化。学习boost本身就是一个复杂度&#xff0c;有魄力在项目中广泛采用boost复杂…