openjdk源码准备编译和依赖

news/2024/5/14 12:44:01/文章来源:https://blog.csdn.net/weixin_38552343/article/details/127257227

在Windows系统上进行openjdk的源码编译

一、准备编译需要的装备

1.首先下载一个软件Cygwin。这个软件是一个在Windows平台下模拟Linux运行环境的软件,提供了一系列的Linux的运行命令。(解释这些,有兴趣的自己百度)

下载的路径点击Cygwin下载

 2.在安装软件,安装软件时不能选择默认安装,因编译时用到很多工具,在默认安装时不会安装。

安装教程点击Cygwin安装,里面的安装很详细,一边看一边安装也会学习东西。

在我推荐的这个安装教程里的第八步,我在详细的解释一两处,在New的一例中的有Default和Skip。Default是系统安装时默认选择的包,Skip是你需要自己安装的包,后面的下拉箭头内是你需要的版本,选中后才能在Src?这一列中进行选中操作。

在这里选择的越多,下载包的时间也越长。

注意,推荐的安装教程里,不需要进行二、三、四大步的安装,只需要到点击完成后即可。这时候就可以应用。

3.在安装编译器。因为JDK中的核心代码是使用C++和C语言编写,所以在使用工具编译的时候选择这两种语言开发时的软件工具--Microsoft Visual Studio C++。(我选择最新的版本,自行破解)

注意,当Cygwin和Visual Studio C++都安装完成后,都会在系统变量里增加配置。要保证Visual Studio C++的系统变量中bin目录在Cygwin的前面,这样Visual Studio C++才能对OpenJDK进行编译。

4.需要在有一个编译好的JDK和下载一个Apache ANT(版本1.6.5以上)。这个jdk不是咱们需要编译的openjdk,而是另外需要下载的,因为jdk里面的源码大部分还是Java,所以需要另外在弄一个。选用Apache ANT是因为源码中的部分代码使用ANT脚本进行编译。

二、准备替代的依赖项

1. 为什么需要装备依赖项呢?

因为openjdk中的源代码与实际的jdk中源代码相比还是有一定的差距,要弥补这部分差距,就需要单独下载这部分的代码,这个代码官方称为“JDK Plug”。下载后是一个jar包,通过Java的运行命令java -jar 包名,进行安装,选择同意即可。

2.增加一个环境变量配置,如果只是运行HotSpot虚拟机则不用安装。环境变量为“ALT_JDK_IMPORT_PATH”,内容指向编译准备中的JDK安装目录。

3.这一步增加字体渲染库FreeType,可以暂时不用安装。

感谢周老师的《深入理解Java虚拟机》,知识面又增加了。

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

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

相关文章

Web APIs:事件基础

事件三要素 1.事件是有三部分组成 事件源 事件类型 事件处理程序 (1)事件源 事件被触发的对象 谁 按钮 (2)事件类型 如何触发 什么事件 比如鼠标点击(click),经过 还是键盘按下 &…

TRC丨艾美捷TRC D-Abequose说明书

艾美捷TRC D-Abequose是一种甜味剂和增味剂配方,适用于食品、饮料、药物和化妆品用途。 艾美捷TRC D-Abequose化学性质: 目录号A010205 化学名称D-Abequose CAS 编号56816-60-5 分子式C₆H₁₂O₄ 分子量148.16 贮存4C 溶解度甲醇(少许…

【蓝桥杯国赛】H 机房

蓝桥杯2022年第十三届决赛真题-机房 - C语言网 (dotcpp.com) 题意: 一共有n个结点,n-1条边,因此这是棵树 信息经过一个结点,就会产生一定的延迟,具体延迟的时间等于该结点的度数 每次询问树上两个结点,问…

c++学习

C学习Static变量生存期和作用域静态局部变量类的继承多态虚函数纯虚函数(接口)可见性数组字符串constmutable成员初始化列表三元操作符在堆、栈上创建C实例化对象C运算符和其重载thisC对象的生存期智能指针uniqueptr(作用域指针)s…

Ubuntu安装微信

1.安装wine sudo dpkg --add-architecture i386 sudo mkdir -pm755 /etc/apt/keyrings sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key//根据你的系统执行不同的命令 Ubuntu 22.04 sudo wget -NP /etc/apt/sources.list.d/…

快乐刷课---Tampermonkey下载使用

TampermonkeyChrome插件伴侣下载资源: 链接:https://pan.baidu.com/s/1IIzB8N2iPW2RjUO2pqDVHw?pwd6666 提取码:6666 1. 下载 Tampermonkey 进入油猴的官网Tampermonkey,下载你使用的浏览器对应的版本 以谷歌浏览器为例&am…

如何计算维吉尼亚密码?Java实现维吉尼亚密码的加密解密算法

文章目录如何计算维吉尼亚密码?Java实现加密算法Java实现解密算法参考博客如何计算维吉尼亚密码? 计算维吉尼亚密码有2种方式,一种是根据密码表查找,另一种是手动计算方法。 1.密码表查找法 第一行是密钥,第一列是明文…

CH579 Cortex-M0 内核低功耗蓝牙 MCU 集成 ARM 内核 32 位微控制器

概述 CH579 是集成 BLE 无线通讯的 ARM 内核 32 位微控制器。片上集成低功耗蓝牙 BLE 通讯模块、以太网控制器及收发器、全速 USB 主机和设备控制器及收发器、段式 LCD 驱动模块、ADC、触摸按键检测模块、RTC 等丰富的外设资源。 特点 32 位 ARM Cortex-M0 内核,…

Arduino常用函数(二)

数学函数 1、min(x,y)函数的作用是返回x,y两者中较小的。 2、max(x,y)函数的作用是返回x,y两者中较大的。 3、abs(x)函数的作用是获取x的绝对值。 4、constrain(amt,low,high)函数的工作过程是,如果amt小于low,则返回low&…

Pytho07--面向对象2

之前我们已经知道了面向对象的概念及在python中创建空类,带方法的类,带初始化方法的类,带实例化方法的类等并认识了类的成员。在我们将其与Java的代码进行对比后发现了python确实有它的方便之处。面向对象的内容不止之前文章中提到的那些&…

IDEA+Tomcat——前端输入数据乱码问题

IDEATomcat——前端输入数据乱码问题 给别人远程部署项目的时候,发现比较老的项目会出现接收前端数据是乱码的问题,但这个项目在我自己的电脑上却是正常的,通过对比发现,IDEA版本或Tomcat版本不同及过低是造成此问题的主要原因&am…

【数学与算法】最小生成树Spanning Trees

链接 无向图: 无向图的意思是,边没有方向。 树: 树是一类特殊的图,树是由节点和无向边构成的; 所有的树都是无向图,但是无向图未必是树; 树有一些性质,但并非所有图都有这些性质…

webrtc防抖动策略NetEq

什么是NetEq:进行抖动控制和丢包隐藏,让音频更平滑。 NetEq的位置 消除抖动的基本原理 NetEq整体架构 NetEq用到的几种缓冲区 NetEq的MCU与DSP NetEq的位置: 网络抖动的计算方式: 两个包在发送端的时间间隔为S,在接收端的间隔为R,那么抖动为J=S-R。 NetEq缓冲区设置多…

golang中struct

前面已经介绍的数组,slice,map有一定的相同之处,即处理的都是相同类型的元素,map中的key和value属于相同的类型,但如果要把多个类型的元素放到一起进行处理,则要使用go语言为我们提供的数据结构struct struct非常适合定…

【Arcgis操作】模块化(批量、自动化)计算多个图层的面积

有很多个图层的面积要计算,如果采用普通的方法,需要给每个图层添加【字段】,然后再挨个计算,图层少的话还好,图层太多的话,很麻烦,很累。 那么,有没有一种方法,能够批量…

OpenCV-Python学习(7)—— OpenCV 轨迹栏操作和键盘响应操作

1. 知识点 cv.namedWindow() 创建一个窗口;cv.createTrackbar() 创建一个轨迹栏;cv.getTrackbarPos() 获取对应轨迹栏的轨迹位置;cv.waitKey() 键盘操作返回对应的key。 2. cv.namedWindow() 函数说明 函数使用 cv.namedWindow(winname, …

【每日算法题】最后一个单词的长度(简单)

今天开始学一学算法✨,前两天研究了下算法,发现算法和数据结构是程序的灵魂,这句话可真没错。 今天先从简单的开始吧😁,LeetCode 第 58 题:最后一个单词的长度 题目:给你一个字符串 s&#xf…

Linux下使用WPS做office的二次开发

Linux下使用WPS做office的二次开发 序 上个版本WPS在Linux上就已经支持二次开发了,可以直接去看官网相关的介绍。https://open.wps.cn/ 我们选择WPS的客户端进行二次开发 开发环境 Ubuntu18.04wps-office_11.1.0.9126_amd64.debQt的开发环境(我本地…

REACT全家桶(1)

基础 一、特点 声明式设计 高效 减少dom操作 灵活 JSX JS拓展语法 组件 单向响应的数据流 二、虚拟DOM 把真实DOM树转成对象树,再通过diff算法,减少重绘与回流 三、搭建环境(提前安装node环境) 1.全局安装create-rea…

《图解 HTTP 》阅读笔记(三)

书接上文《图解 HTTP 》阅读笔记(二),我们继续探索总结http的相关知识点。 我们还是先把问题摆到台面,带着问题读文章。 6.第九章&第十章 知识点 6.1 HTTP的瓶颈以及相应解决方案 HTTP优缺点分析的时候,我们是相对…