现在很多语言都不开发运行环境了,都选择在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,笔者亲测编译成功的更多相关文章

  1. ubuntu16.04下笔记本自带摄像头编译运行PTAM

    ubuntu16.04下笔记本自带摄像头编译运行PTAM 转载请注明链接:https://i.cnblogs.com/EditPosts.aspx?postid=9014147 个人邮箱:feifan ...

  2. office2010安装与破解,笔者亲测可用!!!!!!

    我们首先需要准备office2010安装包与破相应的破解软件.软件包的获取方式:扫码关注[猿成长],,回复 office2010安装,即可获取,下载解压后文件目录结构如下图所示: 打开安装程序文件夹, ...

  3. Navicat Premium 12.0.24安装与激活(亲测已成功激活)

    另请参见:Navicat Premium 12.0.18 / 12.0.24安装与激活 另请参见:Navicat Premium 12安装与激活(亲测已成功激活) 说明: 本主亲自验证过,可以激活! ...

  4. caffe搭建--caffe在invidia+cpu 酷睿2Q9300 + ubuntu16.04.2上面的安装和编译过程

    本文原创,转载请注明出处. ------------------------------------------------分割线-------------------------------- 概要 ...

  5. Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统【转】

    本文转载自:http://blog.csdn.net/songze_lee/article/details/72808631 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.安装ssh服务器 ...

  6. 达尔稳usb转RJ45的接口转换器(usb2.0接口)在ubuntu16.04中驱动(r8152)编译安装与使用

    淘宝买了usb转RJ45的接口转换器:https://detail.tmall.com/item.htm?id=524808012954&ali_refid=a3_430582_1006:11 ...

  7. 全网最全fiddler使用教程和fiddler如何抓包(fiddler手机抓包)-笔者亲测

    一.前言 抓包工具有很多,比如常用的抓包工具Httpwatch,通用的强大的抓包工具Wireshark.为什么使用fiddler?原因如下:1.Wireshark是通用的抓包工具,但是比较庞大,对于只 ...

  8. robotframework日志输出中文乱码以及robotframework常用关键字-笔者亲测

    一.环境说明 python版本:3.7.3 robotframework版本:3.1 robotframwork-ride版本:1.7.4.2 二.问题描述

  9. ubuntu 13.04 163源(亲测可用)

    # deb cdrom:[Ubuntu )]/ trusty main restricted # See http://help.ubuntu.com/community/UpgradeNotes f ...

随机推荐

  1. Unity音量可视化——粒子随声浪跳动

    起初是看到这么一篇博客 Shader特效-- 音符跳动,效果如下图 具体的shader代码就不贴在这里了,他的博客里都有. 处理音频的关键代码如下: private int m_NumSamples ...

  2. C/C++编程语言制作《游戏内存外挂》

    通过C/C++编程语言编写一个简单的外挂,通过 API 函数修改游戏数据,从而实现作弊功能 对象分析要用的 API 函数简单介绍编写测试效果. 下面是我整理好的全套C/C++资料,加入天狼QQ7269 ...

  3. day03总结

    一. 基本数据类型# 1.整型int# 作用:记录年龄.等级.号码等状态# 定义与使用# age = 999# level = 10# qq = 383838338 # res=age * 1# pr ...

  4. CSS(五)- 背景与边框 - 边框圆角与阴影基础用法

    扩展阅读 本文仅仅做border的基础使用,想要深入了解的话可以戳以下几个链接,觉得作者写的很好. CSS Backgrounds and Borders Module Level 3 CSS魔法堂: ...

  5. JVM 专题二十一:垃圾回收(五)垃圾回收器 (二)

    3. 回收器 3.1 Serial回收器:串行回收 3.1.1 概述 Serial收集器是最基本.历史最悠久的垃圾收集器了.JDK1.3之前回收新生代唯一的选择. Serial收集器作为Hotspot ...

  6. java 面向对象(八):面向对象的特征一:封装性

    面向对象的特征一:封装与隐藏1.为什么要引入封装性?我们程序设计追求“高内聚,低耦合”.高内聚 :类的内部数据操作细节自己完成,不允许外部干涉:低耦合 :仅对外暴露少量的方法用于使用. 隐藏对象内部的 ...

  7. celery 错误相关:Monkey-patching not on the main thread; threading.main_thread().join() will hang from a greenlet

    /Users/wangpingyang/.pyenv/versions/3.7.2/lib/python3.7/site-packages/httprunner/__init__.py:5: Monk ...

  8. 【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!

    写在前面 今天想写一篇使用Nginx如何生成缩略图的文章,想了半天题目也没想好,这个题目还是一名读者帮我起的.起因就是这位读者最近出去面试,面试官正好问了一个Nginx如何生成缩略图的问题.还别说,就 ...

  9. Python Ethical Hacking - Packet Sniffer(2)

     Capturing passwords from any computer connected to the same network.  ARP_SPOOF + PACKET_SNIFFER Ta ...

  10. javascript : 找到一个树型数据的一个节点及其所有父节点

    如题. (function () { let tree = { "id": 0, "label": "all", "childre ...