CentOS7编译调试OpenJDK12

2020-04-23 22:07:18 1424

1. 下载源码

https://hg.openjdk.java.net/jdk/jdk12

点击左侧的browse,再点击zip,就可以下载zip格式的源码压缩包。

unzip xxx.zip 解压文件

2. 安装jdk

yum install java-11-openjdk-devel -y

3. 运行configure

cd 进解压后的目录

bash configure

如果你用的是解压版的jdk并且没有使用包管理器安装openjdk11,那么就需要加上–with-boot-jdk参数,后面跟你解压后的jdk目录,比如 bash configure --with-boot-jdk=/root/jdk-11.0.2

如果碰到如下情况

2019-04-09-01.png

只要按照红框处的提示,安装相关的依赖就行了

yum install autoconf -y

我遇到的几个


yum groupinstall "Development Tools" -y
yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel -y
yum install cups-devel -y
yum install fontconfig-devel -y
yum install alsa-lib-devel -y

出现下图的信息就表示ok了,可以执行下一步了 2019-04-09-09.png

4. 运行make

make images

编译时间看你机器的配置了,如果是虚拟机的话,根据官方文档,建议分配至少2G内存,cpu的话有多个核心就分配多个吧,硬盘看个人需求,只是用来编译openjdk的话20G就已经够用了

编译后的jdk在~/build/linux-x86_64-server-release/jdk/

验证一下 ./java -version

5. CLion中调试OpenJDK源码

https://www.jetbrains.com/clion/download/#section=linux

解压tar zxvf xxx.tar.gz

在openjdk源码目录下建立CMakeLists.txt文件 这里有个现成的 https://pan.baidu.com/s/1w4kVtj8oBWCzNY5pcXWwBQ

提取码:xg7t

打开CLion,点击New CMake Project From Sources , 选中openjdk源码目录

在Run/Debug Configurations中增加一个CMake Appliaction Executable选择的是刚刚生成的jdk~/jdk/bin/java ,运行参数-version , 再把Before lunch里面的Build去掉,就可以调试了。

配置完成后HotSpot启动执行入口是java.c的JavaMain()方法,可以断点调试

CLion双击Shift可以查找文件




CentOS7编译调试OpenJDK12

CentOS7编译调试OpenJDK12

1. 下载源码https://hg.openjdk.java.net/jdk/jdk12点击左侧的browse,再点击zip,就可以下载zip格式的源码压缩包。unzip xxx.zip 解压文件2. 安装jdkyum install java-11-openjdk-devel -y3. 运行con
2020-04-23

freemarker 时间显示不正常 设置时区

项目在本地开发的时候显示正常,部署上服务器就一直差8个小时,最后发现freemarker官方文档有这样的说明time_zone:时区的名称来显示并格式化时间。 默认情况下,使用JVM的时区。 也可以是 Java 时区 API 接受的值,或者 "JVM default" (从 FreeMarker 2
2020-03-28
IDEA 2019.1 xml 不高亮

IDEA 2019.1 xml 不高亮

前几天更新了idea后,发现xml里的代码都没有了高亮,变得跟记事本一个德性了打开setting ,搜索 File Types,找到xml项, 查看下方的匹配格式,果然没有xml,(idea真是厉害)点击右方的+,输入*.xml,点击ok,解决问题
2020-03-28

npm install 淘宝镜像

npm install --registry=https://registry.npm.taobao.org
2020-03-28
Java中方法的参数传递机制

Java中方法的参数传递机制

来看一段代码 public class Man { private String name; private Integer age; public String getName() { return name; } publi
2020-03-28
基于自定义注解手写权限控制

基于自定义注解手写权限控制

方法一: AOP 方法二: 拦截器项目结构项目依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-w
2020-03-28

Docker 部署 详细全过程 附代码

Docker 部署本站 全过程环境:CentOS7.61. 安装Docker其他版本CentOS可以参考这个https://help.aliyun.com/document_detail/187598.html查看本机内核版本,内核版本需高于 3.10uname -r 确保 yum 包最新yum u
2020-03-28

SpringBoot 启动普通java工程

引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.0.9</version> </dependency>
2020-03-28

Vue.js DOM操作

<template> <input type="button" @click="reply($event)" value="回复"> </template> export default { methods: { replyFun(e) {
2020-03-29
CentOS7编译调试OpenJDK12

CentOS7编译调试OpenJDK12

1. 下载源码https://hg.openjdk.java.net/jdk/jdk12点击左侧的browse,再点击zip,就可以下载zip格式的源码压缩包。unzip xxx.zip 解压文件2. 安装jdkyum install java-11-openjdk-devel -y3. 运行con
2020-04-23
编写自己的Spring Boot Starter

编写自己的Spring Boot Starter

1.新建一个maven项目命名规则统一是xxx-spring-boot-starter完整pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
2020-06-29