JAVA虚拟机学习(一):win10编译openjdk8

win10下编译openjdk8

1.编译环境

  1. openjdk8下载
    下载地址:https://download.java.net/openjdk/jdk8u40/ri/openjdk-8u40-src-b25-10_feb_2015.zip
    下载解压完成后在openjdk根目录下有编译手册README-builds.html,其中有说明Windows下如何编译。

  2. 安装Cygwin

    2.1.下载Cygwin
    直接去Cygwin官网下载:www.cygwin.com
    低版本可能会有问题,我直接下载的是最新版本3.1.5在这里插入图片描述
    2.2.安装Cygwin
    Cygwin安装需要选择额外的工具,官方手册说明需要以下额外工具
    在这里插入图片描述
    (1)运行安装文件,无脑下一步
    在这里插入图片描述
    在这里插入图片描述
    (2)在这一步选择下一步后可能会出现加载不到数据源
    在这里插入图片描述
    在这里插入图片描述
    (3)添加网易数据源http://mirrors.163.com,国内有很多数据源
    在这里插入图片描述
    (4)接下来根据前面的清单一个一个搜索并选择版本
    在这里插入图片描述
    在这里插入图片描述
    (5)全部选择完后继续无脑下一步,直到安装完成
    在这里插入图片描述
    在这里插入图片描述

3.安装Visual Studio 2010 Professional
下载地址:https://docs.microsoft.com/zh-cn/visualstudio/releasenotes/vs2010-version-history
在这里插入图片描述
安装时选择C++模块安装即可

  1. 下载FreeType
    下载地址:https://sourceforge.net/projects/freetype/files/latest/download?source=files
    下载完成后解压
    (1)打开Visual Studio 2010,文件->打开->项目解决方案
    在这里插入图片描述
    (2) 选择freeTyp目录下 builds\windows\vc2010\freetype.sln
    在这里插入图片描述
    (3)选择项目右键属性
    在这里插入图片描述
    在这里插入图片描述
    (4)点击配置管理器,将配置设置成Release static 平台选择x64
    在这里插入图片描述
    (5)返回freeType属性页,设置目标扩展名为.lib,平台集成工具为v100,配置类型选择静态库(.lib)
    在这里插入图片描述
    (6)右键项目,点击生成
    在这里插入图片描述
    (7)再右键项目,属性进入属性页,将目标文件扩展名设置为.dll,配置类型设置为动态库(.dll)
    在这里插入图片描述
    (8)再右键项目,生成
    (9)进入freeType根目录创建lib文件夹,进入objs\x64\Release Static目录下,将freetype.dll,freetype.lib拷贝进新创建的lib下

2.编译JDK

  1. 生成编译配置脚本
    打开Cygwin,进入OpenJdk根目录,在Cgywin中可以用/cygdrive/ + 目录形式,例如:/cygdrive/d/openjdk
    (1)输入命令:

    ./configure --with-freetype=/cygdrive/*/freetype-2.10.2/ --with-target-bits=64 --enable-debug
    

    –with-freetype=/cygdrive后跟freeType目录
    (2)运行成功后
    在这里插入图片描述

  2. 开始编译
    (1)输入命令:

    make all
    

    编译时间比较长,需要一两个小时,中间如果出错,需要修改配置执行make clean 再执行make all进行重新编译(反反复复编译了好几次,花费了大半天~~~~)
    (2)编译成功界面:
    在这里插入图片描述
    (3)验证
    cmd进入openjdk目录下的build\windows-x86_64-normal-server-fastdebug\jdk\bin
    执行javac -version和java -version
    在这里插入图片描述

3.安装编译过程中的问题

  1. 生成lib时失败
    在这里插入图片描述
    解决方法
    右键项目属性,将平台集成工具设置为v100
    在这里插入图片描述2. 生成脚本出现错误Your cygwin is too old. You are running 3.1.5(0.340/5/3), but at least cygwin 1.7 is required. Please upgrade
    在这里插入图片描述
    解决方法
    打开 openjdk\common\autoconf\generated-configure.sh, 搜索but at least cygwin 1.7,将7250-7254整个if判断都注释掉
    在这里插入图片描述
  2. 生成脚本出现错误The path of SRC_ROOT, which resolves as “*/openjdk-8u40-src-b25-10_feb_2015/openjdk”, is invalid
    在这里插入图片描述
    解决方法
    openjdk目录下不能有中文
  3. 生成脚本出现错误:error: Target CPU mismatch. We are building for x86_64 but CL is for “”; expected “x64”.
    在这里插入图片描述
    解决方法
    打开 openjdk\common\autoconf\generated-configure.sh, 搜索Target CPU mismatch,将20214-20222与21815-21823整个if判断都注释掉
    在这里插入图片描述
    在这里插入图片描述
  4. 生成脚本出现错误:error: Can not find or use freetype at location given by --with-freetype
    在这里插入图片描述
    解决方法
    核对./configure --with-freetype=/cygdrive/*/freetype-2.10.2/ --with-target-bits=64 --enable-debu中的freeType路径是否正确
  5. 编译时出现错误:第 65 行:[: ▒▒▒▒ x64 ▒▒ Microsoft ® C/C++ ▒Ż▒▒▒▒▒▒▒ 16: 需要整数表达式/usr/bin/expr: 语法错误
    在这里插入图片描述
    解决方法
    (1)打开\hotspot\make\windows\get_msc_ver.sh,注释掉65-70的if语句,在之后添加MSC_VER_RAW=16.00.30319.01
    MSC_VER=1600
    在这里插入图片描述
    (2)这里需要知道cl的版本号,通过cmd执行VS2010目录下\VC\bin\cl.exe,执行时可能会出现以下错误
    在这里插入图片描述
    (3)配置环境变量:在path中添加C:*\Common7\IDE, vs2010安装目录下的Common7\IDE的路径(网上查找也有说执行下Common7\Tools\vsvars32.bat,但我执行后还是会出现这个错误)
    (4)再重新执行,可以看到版本为16.00.30319.01,对应MSC_VER_RAW
    在这里插入图片描述
  6. 编译时出现错误:make[1]: *** [BuildJdk.gmk:70:libs-only] 错误 2
    在这里插入图片描述
    解决方法

(1)用notepad++打开openjdk目录下\jdk\make\CreateJars.gmk
(2)notepad++中点击视图->显示符号->显示所有字符
在这里插入图片描述
(3)找到268行和280行.class$$处
在这里插入图片描述
(4)在.class后Crtl+M(注意这两个地方一定都要改)
在这里插入图片描述
(5)保存后执行再在Cygwin中执行make clean清理,再执行make all

参考文章和资料

1.https://blog.csdn.net/qq0012520/article/details/86014579
2.https://blog.csdn.net/sptoor/article/details/8892315?utm_source=blogxgwz3
3.Openjdk8源码中的README-builds.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值