Ubuntu16.04编译Openjdk8,笔者亲测编译成功
现在很多语言都不开发运行环境了,都选择在JRE上运行,足以证明JVM的优越。你精通了JVM,未来的路才可能走得轻松。这篇文章是你走近jvm的第一篇,编译Openjdk8源码
编译环境
操作系统:Ubuntu16 (ubuntu-16.04.6-desktop-amd64.iso)
boot jdk:jdk7 (jdk-7u80-linux-x64.tar.gz)
Openjdk:jdk8 (openjdk-8u40-src-b25-10_feb_2015.zip)
编译前准备
Ubuntu提供两种进入方式,一个是我们平常最熟悉的图形界面形式,还有一种是纯命令行方式
Ctrl + Alt + F6 即可进入纯命令行模式,进入后,需要输入用户名,密码
接着安装vim工具,并用vim打开如下文件
sudo vim /etc/network/interfaces
添加以下内容
修改如下文件,将managed设置为true,如果是只读文件,需要授权(此处不再赘述)
/etc/NetworkManager/NetworkManager.conf
打开如下文件, 添加内容
/etc/resolvconf/resolv.conf.d/base
重启网络服务
service network-manager restart
Ubuntu 更改文件权限及chmod详细用法如下:
一、常用方法如下:(其中×××指文件名)
(所有者有读和写的权限,组用户只有读的权限)
sudo chmod ×××
(每个人都有读和写以及执行的权限)
sudo chmod ×××
输入以下命令进行安装远程ssh服务
# sudo apt-get install openssh-server
若没有ssh,需要执行
# sudo apt-get install ssh
(设置完静态ip,并用xshell远程连接成功,如下图)

编译流程
1、安装依赖(这步比较慢,耐心等待)
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfreetype6-dev libasound2-dev ccache
或者
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev
sudo apt-get install libcups2-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install libasound2-dev
2、安装boot jdk
因为openjdk源码中有些功能是用Java代码实现的,比如调试工具:jps、jstat等,还有一些核心jar包,如rt.jar、tools.jar等,都需要相应版本的JDK。boot jdk需要比你编译的jdk版本低,这里我们用jdk7

直接解压到Documents目录下,然后配置下环境
tar zxvf jdk-7u80-linux-x64.tar.gz
配置path
vim ~/.bashrc
文件底部加入下面三句话(改成你自己的用户名)
export JAVA_HOME=/home/lusai/Documents/jdk1..0_80
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
让配置的path重新生效
source ~/.bashrc
查看是否安装成功
java -version

3.解压openjdk8 ,

安装 unzip
sudo apt install unzip
进入 openjdk8 的主目录,解压文件
unzip openjdk-8u40-src-b25-10_feb_2015.zip
进去解压的文件
cd /home/lusai/Documents/openjdk

执行配置命令,填写Boot jdk的安装目录
sudo bash configure --with-target-bits= --with-boot-jdk=/home/lusai/Documents/jdk1..0_80/ --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=
如果配置成功,则会显示如下信息:

开始编译(时间较长,请耐心等待)
sudo make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=
看到下面这个画面就证明编译成功,就可以用了

若在编译过程中,出现以下错误,请不要慌张,这并没有太大问题(网上是这么说的,最后确实也是没太大问题):

查看刚才编译成功的openjdk版本。首先进入 以下目录,
cd /home/lusai/Documents/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin
再执行命令 ./java -version。可得如下结果:
./java -version

至此,Openjdk8编译大功告成
Ubuntu16.04编译Openjdk8,笔者亲测编译成功的更多相关文章
- ubuntu16.04下笔记本自带摄像头编译运行PTAM
ubuntu16.04下笔记本自带摄像头编译运行PTAM 转载请注明链接:https://i.cnblogs.com/EditPosts.aspx?postid=9014147 个人邮箱:feifan ...
- office2010安装与破解,笔者亲测可用!!!!!!
我们首先需要准备office2010安装包与破相应的破解软件.软件包的获取方式:扫码关注[猿成长],,回复 office2010安装,即可获取,下载解压后文件目录结构如下图所示: 打开安装程序文件夹, ...
- Navicat Premium 12.0.24安装与激活(亲测已成功激活)
另请参见:Navicat Premium 12.0.18 / 12.0.24安装与激活 另请参见:Navicat Premium 12安装与激活(亲测已成功激活) 说明: 本主亲自验证过,可以激活! ...
- caffe搭建--caffe在invidia+cpu 酷睿2Q9300 + ubuntu16.04.2上面的安装和编译过程
本文原创,转载请注明出处. ------------------------------------------------分割线-------------------------------- 概要 ...
- Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统【转】
本文转载自:http://blog.csdn.net/songze_lee/article/details/72808631 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.安装ssh服务器 ...
- 达尔稳usb转RJ45的接口转换器(usb2.0接口)在ubuntu16.04中驱动(r8152)编译安装与使用
淘宝买了usb转RJ45的接口转换器:https://detail.tmall.com/item.htm?id=524808012954&ali_refid=a3_430582_1006:11 ...
- 全网最全fiddler使用教程和fiddler如何抓包(fiddler手机抓包)-笔者亲测
一.前言 抓包工具有很多,比如常用的抓包工具Httpwatch,通用的强大的抓包工具Wireshark.为什么使用fiddler?原因如下:1.Wireshark是通用的抓包工具,但是比较庞大,对于只 ...
- robotframework日志输出中文乱码以及robotframework常用关键字-笔者亲测
一.环境说明 python版本:3.7.3 robotframework版本:3.1 robotframwork-ride版本:1.7.4.2 二.问题描述
- ubuntu 13.04 163源(亲测可用)
# deb cdrom:[Ubuntu )]/ trusty main restricted # See http://help.ubuntu.com/community/UpgradeNotes f ...
随机推荐
- USACO07 MAR Face The Right Way G
疫情当下,美帝又开始倒牛奶了,这一幕似曾相识啊~~~ 这个题目非常的应景,又是美国佬的奶牛 [题目地址] [一句话题意] N头牛排成一列1<=N<=5000.每头牛或者向前或者向后. 为了 ...
- CF833 A The Meaningless Game
题干 Slastyona and her loyal dog Pushok are playing a meaningless game that is indeed very interesting ...
- 简单的MVC框架
效果图: 源码下载:https://github.com/doyoulaikeme/DotNetSample/tree/master/DotNetSample4/easyMVCFramework
- 《SpringBoot判空处理》接开@valid的面纱
一.事有起因 我们在与前端交互的时候,一般会遇到字段格式校验及非空非null的校验,在没有SpringBoot注解的时候, 我们可能会在service进行处理: if(null == name){ t ...
- Python-02 可视化之tkinter介绍
1 控件介绍 1.1 Label import tkinter as tk # 使用Tkinter前需要先导入 window = tk.Tk() window.title('My Window') w ...
- Maven 专题(一):Maven 安装与配置(vscode)
0.首先了解一下maven安装目录 Bin:该目录包含Mvn运行的脚本 Boot:Maven自身的类加载器框架 Conf:包含非常重要的文件setting.xml Lib:该目录包含了所有Maven运 ...
- JVM 专题二十二:垃圾回收(六)垃圾回收器 (三)
4. GC日志分析 4.1 日志分析 通过阅读GC日志,我们可以了解Java虚拟机内存分配与回收策略. 内存分配与垃圾回收的参数列表-XX:+PrintGC:输出GC日志.类似-verbose: gc ...
- java 基本语法(十三) 数组(六)数组的常见异常
1.数组角标越界异常:ArrayIndexOutOfBoundsException int[] arr = new int[]{1,2,3,4,5}; // for(int i = 0;i <= ...
- 04 drf源码剖析之版本
04 drf源码剖析之版本 目录 04 drf源码剖析之版本 1. 版本简述 2. 版本使用 3.源码剖析 4. 总结 1. 版本简述 API版本控制使您可以更改不同客户端之间的行为.REST框架提供 ...
- dataframe一次小实验
老师搞不清,一个ndarray[df['columns']==a],返回的是什么,目前看来应该是df[] == a 的索引