centos7 mini 系统openjdk9源码编译
centos7 mini 系统openjdk9源码编译
骰子红豆豆 发表于1周前
centos7 mini 系统openjdk9源码编译
  • 发表于 1周前
  • 阅读 252
  • 收藏 2
  • 点赞 0
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

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

前提先看完这篇博文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的调试吧!

标签: CentOS OpenJDK
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 4
码字总数 6110
×
骰子红豆豆
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: