文档章节

centos7 mini 系统openjdk9源码编译

骰子红豆豆
 骰子红豆豆
发布于 04/16 01:29
字数 1690
阅读 277
收藏 3
点赞 0
评论 0

前提先看完这篇博文https://my.oschina.net/u/3829817/blog/1795177

openjdk的来源

根据GNU协议又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称Copyleft)概念。故Sun公司于2009年4月15日正式发布OpenJDK。甲骨文在 2010 年收购Sun之后接管了这个项目。

Oracle JDK只发布二进制安装包,而OpenJDK只发布源码。

学习openjdk的必要性

冯·诺依曼机原理

  • 计算机由运算器、控制器、存储器、输入设备和输出设备五部分组成。
  • 采用存储程序的方式,程序和数据放在同一个存储器中,指令和数据一样可以送到运算器运算,即由指令组成的程序是可以修改的。
  • 数据以二进制代码表示。
  • 指令由操作码地址码组成。
  • 指令在存储器中按执行顺序存放,由指令计数器指明要执行的指令所在的单元地址,一般按顺序递增,但可按运算结果或外界条件而改变。
  • 机器以运算器为中心,输入输出设备与存储器间的数据传送都通过运算器。

 由此我们得知计算机上设备的运行是需要二进制代码也就是0,1组合,而计算机处理运算的部分是运算器与控制器也就是现在的微处理器CPU,所以就有了机器码,机器码是给CPU下达指令的,机器识别很容易,而人通过机器码编程太过复杂,于是聪明的人类将机器码0001,0010这种二进制码映射成固定的符号,比如0001代表read,0010代表add,于是就有了汇编语言,汇编语言形成的操作指令就是CPU的操作指令,所以每个CPU都有自己的操作规范,于是就有了8086处理器,Intel 1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构。 

8086是16位处理器;后续有了32位的80386处理器,直到2003年AMD对于这个架构发展了64位的扩充,并命名为AMD64。后来Intel也推出了与之兼容的处理器,并命名为Intel 64。两者一般被统称为x86-64x64,开创了x86的64位时代。这里16位32位64位代表的是寄存器的个数。

一来基于x86架构形成的指令集对于人类还是太复杂,二来每个CPU在指令集上都会有所不同,这样基于某个CPU写出来的软件只能给特定的CPU使用,于是在基于x86架构的指令集上开始诞生了汇编语言,汇编语言对人还是不太友好,于是人类又发明高级语言,比如C , C++语言,这样高级语言和汇编语言直接映射指令集,于是在这种映射之间就诞生了编译器,这就是编译原理。

(source language)源程序→编译器 →目标机器代码程序(object code

后来人类又发明了面向对象的编程语言,这种语言更贴合人的思维逻辑,于是主角诞生了--java超高级语言

后来sun公司的程序猿通过JNI将JAVA,C,C++封装在一起就形成JDK,JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。于是在2009年,sun公司将jdk源码公布于众,openjdk就这样诞生了。

openjdk的编译

本人编译的是openjdk9

openjdk9源码地址http://hg.openjdk.java.net/jdk9

这是一个版本树,基于Mercurial搭建的一个代码托管平台,类似于github开源中国的码云

打开本地的centos7虚拟机,请确保本地电脑联网并且网速要很好。网速差就找个网速很好的地方,否则你会哭的。我已经哭过了。

yum install mercurial

下载openjdk9的编译指南项目源码,这个源码下都是需要编译和下载openjdk9源码的bash脚本和编译指南

openjdk9指南项目下载地址http://hg.openjdk.java.net/jdk9/jdk9/

点击zip下载到本地

然后解压zip包进入到\common\doc的目录下

用浏览器打开building.html并翻译成中文

然后根据指南开始你的表演

最好通过root权限登录centos7虚拟机

clone指南项目到/opt目录下 

hg clone http://hg.openjdk.java.net/jdk9/jdk9
cd jdk9
bash get_source.sh

请保持耐心等待源码下载完成

下载编译器,外部库和头文件

sudo yum groupinstall "Development Tools"

然后安装引导jdk8

sudo yum install java-1.8.0-openjdk-devel

运行配置参数

bash configure --with-target-bits=64 --disable-warnings-as-errors --with-debug-level=slowdebug --with-boot-jdk=/usr/jdk1.8.0_161

将这个--with-boot-jdk=/usr/jdk1.8.0_161修改为自己的jdk绝对路径

编译openjdk9源码

make images

 进入到根目录下将jdk环境变量修改成自己的路径./build/*/images/jdk/

vi /etc/profile
source /etc/profile
java -version

验证成功

现在开始openjdk9的调试吧!

© 著作权归作者所有

共有 人打赏支持
骰子红豆豆
粉丝 2
博文 4
码字总数 6110
作品 0
西安
程序员
Mac OSX 10.10 Yosemite编译OpenJDK 9

在Mac OSX 10.10系统上编译了下OpenJDK9,以下仅是个人安装记录,供参考。 编译时间:2015-06-13 系统版本:Mac OS X Yosemite 10.10.4 编译OpenJDK版本:JDK 9 相关软件版本: XCode版本:X...

易水瑶
2015/06/13
0
2
手动制作mini linux详细步骤—之二

8.2.3、编译mini linux网卡驱动模块 对于网卡驱动,我们是通过在内核中设置为模块形式来动态加载,所以需要再次针对单个内核模块进行编译,编译单个内核模块使用如下命令: # cd /usr/src/li...

zzjiwang
2017/09/18
0
0
Jshell

一 、安装jdk9 方法一 sudo apt install openjdk-9-jdk-headless 方法二 下载jdk9: hg clone http://hg.openjdk.java.net/jdk9/jdk9 openjdk9 cd openjdk9 && sh ./get_source.sh # 编译 ba......

杜鹏程
2016/10/11
22
0
4412开发板学习笔记---Linux驱动的学习方法

转自迅为iTOP-4412开发板实战教程书籍:http://www.topeetboard.com 1. Linux驱动的学习方法 Linux内核中有上百个驱动,知识点多且杂,对于想学习驱动的同学来说,需要尽快掌握基础知识:如开...

歌之王子殿下
2016/06/28
260
0
嵌入式Linux内核模块的移植

一个在X86上的Linux,如果要编写了一个内核模块,我们可以按照下满的Makefile格式来写,然后生成了.ko文件,insmod就可以了 原文件是opps.c ifneq ($(KERNELRELEASE),) obj-m := opps.o else...

晨曦之光
2012/04/13
59
0
EXSI6.7中的Centos7虚拟机安装vmware tools工具

一、在exsi创建虚拟机 创建虚拟机:Centos7 硬盘:40G 内存:4G iso:Centos7-mini 二、安装系统 在图形化界面设置网络(network),选择手动设置,分配ip: ip:172.16.30.16 DNS:61.139....

bestlope
07/10
0
0
yum换国内源 yum下载rpm包 源码包安装

yum换国内源 有时候系统自带的 先删除本地光盘制作的yum源:cd /etc/yum.repos.d rm -f dvd.repo 复制系统自带的yum源到yum.repos.d目录下:cp ../yum.repos.d_bak/* . 删除CentOS-Base.rep...

黄昏残影
06/27
0
0
Linux 嵌入式驱动开发:LED控制(1)--- 依赖于linux内核程序

硬件原理图分析。由原理图得知LED电路是共阳极的,并分别由2440的GPB5、GPB6、GPB7、GPB8口控制的 2. 去掉内核已有的LED驱动设置,因为IO口与mini2440开发板的不一致,根本就不能控制板上的L...

宁宁爸
2015/12/10
117
0
移植libnopoll到SylixOS技术笔记

1.开发环境 宿主机:windows 7 集成开发环境:Real-Evo IDE 3.1.5 虚拟机:ubuntu 目标机:mini2440 本篇仅介绍nopoll库的移植过程,包括资源的获取,工程文件的修改以及编译出错处理。 2.No...

炉yu
2017/03/10
0
0
virtualbox 安装centos7 配置桥接网卡,实现主机和虚拟机互通,虚拟机可以访问外网,解决无法上网问题

观看视频 1. virtualbox快速搭建虚拟机   centos7-mini,配置桥接网络,实现和主机互通,虚拟机可以访问外网 链接: https://pan.baidu.com/s/1dE5EYnn 密码: efds 2.virtualbox快速复制虚拟...

landebug
2017/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
16分钟前
0
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
23分钟前
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
27分钟前
0
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
30分钟前
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
0
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
1
0
iptables规则备份和恢复、firewalld的9个zone以及操作和service的操作

保存以及备份iptalbes规则 设定了的防火墙规则要进行保存,否则系统重启后这些规则就没有了,使用命令 ”service iptables save ” 会把设定好的防火墙规则保存到文件/etc/sysconfig/iptabl...

黄昏残影
昨天
0
0
k8s image

k8s.gcr.io/kube-apiserver-amd64:v1.11.0k8s.gcr.io/kube-controller-manager-amd64:v1.11.0k8s.gcr.io/kube-scheduler-amd64:v1.11.0k8s.gcr.io/kube-proxy-amd64:v1.11.0k8s.gcr.......

分秒
昨天
0
0
数据结构--排序

这篇博客包含了数据结构中多种的排序算法: (1)简单选择:第一趟在A[0]~A[n-1]之间找到最小的,与A[0]进行交换,之后在A[1]~A[n-1]之间进行。。。第i趟在A[i-1]~A[n-1]之间找到最小的,最后...

wangxuwei
昨天
1
0
一名3年工作经验的java程序员应该具备的职业技能

一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪...

老道士
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部