博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenJDK 编译-Linux环境
阅读量:4632 次
发布时间:2019-06-09

本文共 2019 字,大约阅读时间需要 6 分钟。

说明:笔者是在Ubuntu 16.04虚拟机中编译 OpenJDK 8

源码下载

推荐直接下载

环境准备:

安装bootstrap JDK,笔者安装的;

在环境变量PATH中添加jdk的bin目录,不添加的话,在编译第一步时需要带参数

解压后阅读README-builds.html,按照要求安装Linux环境需要的软件。不清楚要安装哪些,在编译第一步失败的时候会提示你安装。

#如果之前有设置的话,这两个环境变量需要去掉,不然会出问题。unset JAVA_HOMEunset CLASSPATH

 

编译

切换到解压后目录

第一步:

bash ./configure

或者带jdk目录,path为bootstrap JDK的目录

bash ./configure --with-boot-jdk=path

第二步:

make all

*遇到的坑爹问题

1,版本问题,recipe for target 'check_os_version' failed

 方案一:直接注释检查

nano hotspot/make/linux/Makefile

check_os_version: #ifeq($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),) #   $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1; #endif

 方案二:添加版本支持

nano hotspot/make/linux/Makefile

SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4%

2,make参数语法,添加'I'

nano hotspot/make/linux/makefiles/adjust-mflags.sh# line 67. (新版本make语法有变动) s/ -\([^        I][^    ]*\)j/ -\1 -j/

3,undefine symbols错误

提升一个模板函数定义至头文件,避免出现undefined symbols错误。

# 将 hotspot/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp 中的template 
void write_ref_array_pre_work(T* dst, int count)方法,提升到对应的头文件g1SATBCardTableModRefBS.hpp中。# 模板函数定义需要出现在头文件中,以便编译器为其生成特化版本。若无此修改,运行编译后的java程序,将出现undefine symbols错误。

编译成功标识

验证

1,the build result. This directory typically looks like:

build/linux-x64-normal-server-release

2,JDK输出目录:

In particular, the build/*/images/j2sdk-image/bin directory should contain executables for the OpenJDK tools and utilities for that configuration.

 3,查看版本

3.1直接在bin目录下运行  ./java -version

 

3.2将编译好的JDK复制到适当目录,配置JAVA_HOME指向该目录,使环境变量生效后,执行java -version命令,就能看到带用户机器名的jdk版本。

cp build/linux-x86_64-normal-server-release/images/j2sdk-image/ -r /usr/lib/jdk/openjdk8
sunil@ubuntu:~/Downloads/openjdk$ java -versionopenjdk version "1.8.0-internal"OpenJDK Runtime Environment (build 1.8.0-internal-sunil_2016_11_21_18_06-b00)OpenJDK 64-Bit Server VM (build 25.0-b70, mixed mode)sunil@ubuntu:~/Downloads/openjdk$

 

参考文档

https://blog.mlworks.cn/tech/compile-openjdk8-ubuntu-16.04.html

转载于:https://www.cnblogs.com/sunilsun/p/6078171.html

你可能感兴趣的文章
data,bdata,idata,pdata,xdata,code存储类型与存储区
查看>>
JS知识整理之 Call&Apply方法
查看>>
MySql 和 PostGres 对照表
查看>>
sqlmap使用
查看>>
路由转发
查看>>
UITableView
查看>>
MySQL笔记
查看>>
SQL查询强化训练(2)
查看>>
Django 分页
查看>>
layuiAdmin 项目修改
查看>>
创新点子:博客图文混编工具
查看>>
NSUserDefault、NSMutableDictionary的setValue和setObject区别
查看>>
TreeSet&第三方比较器&Map
查看>>
经典算法mark
查看>>
http://channel9.msdn.com/Events/MIX
查看>>
静态页面:html5个人博客模板《绅士》
查看>>
mvc 基础概念
查看>>
mysql数据恢复
查看>>
kali 插耳机没声音
查看>>
Codeforces Round #294 (Div. 2) D. A and B and Interesting Substrings
查看>>