ubuntu 编译 jdk (一)

ubuntu 编译 jdk,本文的写作时间是2019.1.14。

这次一次完整的全过程编译讲解,请耐心读完本连篇文章,或许对你的编译有帮助 !

我的编译环境:

系统:在VMWare中、Ubuntu 16.04 LTS 版本。

JDK:OpenJDK8U。

从Oracle的JDK中看,jdk8是LTS版本,每三年出一版LTS[长 期技术支持];JDK11是LTS版本,但openjdk中暂时没。

据采用的OpenJDK8。

做一次编译的想法,起源于。在品读《深入理解java虚拟机》周志明大牛的经典书集时的一时冲动。

也是对光看不练假把式的一次行动。

A.1获取源码

OpenJDK  http://openjdk.java.net/

Source code  1.Mercurial    2.Bundles(6)   复制的下载地址:http://hg.openjdk.java.net/jdk8u/jdk8u/

这里要补充一句,OpenJDK是采用的Mercurial进行的版本管理,当然下载也是需要用Mercurial下载。

操作如下: 

 

 

A.2系统需求

建议尽量在Linux或Solaris上构造OpenJDK,本次采用Ubuntu16.04 LTS。

下载源码。打开vmware >ubuntu中输入命令:

首先建议使用root用户操作,基于权限问题的一些不必要的报错。

gap@ubuntu:~/jdk8u$ su
密码: 

其次,安装mercurial版本管理软件。

gap@ubuntu:~$ apt install mercurial
[sudo] gap 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  libllvm4.0
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  javascript-common libjs-excanvas mercurial-common
建议安装:
  apache2 | lighttpd | httpd qct kdiff3 | kdiff3-qt | kompare | meld | tkcvs
  | mgdiff python-mysqldb python-pygments python-openssl
下列【新】软件包将被安装:
  javascript-common libjs-excanvas mercurial mercurial-common
升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 6 个软件包未被升级。
需要下载 1,932 kB 的归档。
解压缩后会消耗 10.2 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.yun-idc.com/ubuntu xenial/main amd64 javascript-common all 11 [6,066 B]
获取:2 http://mirrors.yun-idc.com/ubuntu xenial/universe amd64 libjs-excanvas all 0.r3-4 [45.2 kB]
获取:3 http://mirrors.yun-idc.com/ubuntu xenial-updates/universe amd64 mercurial-common all 3.7.3-1ubuntu1.2 [1,833 kB]
获取:4 http://mirrors.yun-idc.com/ubuntu xenial-updates/universe amd64 mercurial amd64 3.7.3-1ubuntu1.2 [47.8 kB]
已下载 1,932 kB,耗时 0秒 (2,041 kB/s)        
正在选中未选择的软件包 javascript-common。
(正在读取数据库 ... 系统当前共安装有 219802 个文件和目录。)
正准备解包 .../javascript-common_11_all.deb  ...
正在解包 javascript-common (11) ...
正在选中未选择的软件包 libjs-excanvas。
正准备解包 .../libjs-excanvas_0.r3-4_all.deb  ...
正在解包 libjs-excanvas (0.r3-4) ...
正在选中未选择的软件包 mercurial-common。
正准备解包 .../mercurial-common_3.7.3-1ubuntu1.2_all.deb  ...
正在解包 mercurial-common (3.7.3-1ubuntu1.2) ...
正在选中未选择的软件包 mercurial。
正准备解包 .../mercurial_3.7.3-1ubuntu1.2_amd64.deb  ...
正在解包 mercurial (3.7.3-1ubuntu1.2) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在设置 javascript-common (11) ...
正在设置 libjs-excanvas (0.r3-4) ...
正在设置 mercurial-common (3.7.3-1ubuntu1.2) ...
正在设置 mercurial (3.7.3-1ubuntu1.2) ...#############################............] 

Creating config file /etc/mercurial/hgrc.d/hgext.rc with new version#######..............] 

其次,正式下载jdk8u源代码。可能需要一段时间,视你的网络速度而定!

gap@ubuntu:~$ hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/
[sudo] gap 的密码: 
destination directory: jdk8u
requesting all changes
adding changesets
adding manifests
adding file changes                                                             
added 2361 changesets with 2850 changes to 142 files                            
updating to branch default
86 files updated, 0 files merged, 0 files removed, 0 files unresolved

其次,查看下载的jdk8u文件夹。

gap@ubuntu:~$ ll jdk8u/
总用量 408
drwxr-xr-x  7 root root   4096 Jan 16 08:57 ./
drwxr-xr-x 28 gap  gap    4096 Jan 16 08:56 ../
-rw-r--r--  1 root root   1522 Jan 16 08:57 ASSEMBLY_EXCEPTION
drwxr-xr-x  6 root root   4096 Jan 16 08:57 common/
-rw-r--r--  1 root root   1588 Jan 16 08:57 configure
-rw-r--r--  1 root root   3107 Jan 16 08:57 get_source.sh
drwxr-xr-x  4 root root   4096 Jan 16 08:57 .hg/
-rw-r--r--  1 root root     70 Jan 16 08:57 .hgignore
-rw-r--r--  1 root root  50049 Jan 16 08:57 .hgtags
drwxr-xr-x  2 root root   4096 Jan 16 08:57 .jcheck/
-rw-r--r--  1 root root  19274 Jan 16 08:57 LICENSE
drwxr-xr-x  6 root root   4096 Jan 16 08:57 make/
-rw-r--r--  1 root root   6232 Jan 16 08:57 Makefile
-rw-r--r--  1 root root   1549 Jan 16 08:57 README
-rw-r--r--  1 root root 129333 Jan 16 08:57 README-builds.html
drwxr-xr-x  3 root root   4096 Jan 16 08:57 test/
-rw-r--r--  1 root root 153824 Jan 16 08:57 THIRD_PARTY_README

其次,源码下载完成。开始进入正式编译。

 在进行正式的编译前,很有必要看文件夹中的编译帮忙文件。README-builds.html   !!!

虽然是英语,如果看着吃力,可以用google插件翻译,对比阅读。强调一定要通读一遍  !!!

重要点,图中框出!

下载源码的脚本命令  !!!

A3,下载源码

首先,进入jdk8u文件夹,修改  get_source.sh  的权限。

gap@ubuntu:~/$ cd  jdk8u
gap@ubuntu:~/jdk8u$ chmod 755 get_source.sh 

其次,执行  get_source.sh

root@ubuntu:/home/gap/jdk8u# ./get_source.sh 
# Repositories:  corba jaxp jaxws langtools jdk hotspot nashorn 
                corba:   hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/corba corba
                 jaxp:   hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/jaxp jaxp
                corba:   requesting all changes
                 jaxp:   requesting all changes
                corba:   adding changesets
                 jaxp:   adding changesets
                corba:   adding manifests
                corba:   adding file changes
                 jaxp:   adding manifests
                 jaxp:   adding file changes
                corba:   added 1870 changesets with 4831 changes to 1392 files
                corba:   updating to branch default
                corba:   1198 files updated, 0 files merged, 0 files removed, 0 files unresolved
                jaxws:   hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/jaxws jaxws
                jaxws:   requesting all changes
                jaxws:   adding changesets
                jaxws:   adding manifests
                jaxws:   adding file changes
                 jaxp:   added 1955 changesets with 8181 changes to 4242 files
                 jaxp:   updating to branch default
                 jaxp:   2072 files updated, 0 files merged, 0 files removed, 0 files unresolved
            langtools:   hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/langtools langtools
            langtools:   requesting all changes
            langtools:   adding changesets
            langtools:   adding manifests
                jaxws:   transaction abort!
                jaxws:   rollback completed
                jaxws:   abort: stream ended unexpectedly (got 7032 bytes, expected 21221)
                  jdk:   hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/jdk jdk
                  jdk:   requesting all changes
                  jdk:   adding changesets
            langtools:   adding file changes
                  jdk:   adding manifests
            langtools:   transaction abort!
            langtools:   rollback completed
            langtools:   abort: stream ended unexpectedly (got 15818 bytes, expected 42713)
              hotspot:   hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot hotspot
              hotspot:   requesting all changes
              hotspot:   adding changesets
              hotspot:   adding manifests
              hotspot:   adding file changes
              hotspot:   transaction abort!
              hotspot:   rollback completed
              hotspot:   abort: stream ended unexpectedly (got 8993 bytes, expected 46086)
              nashorn:   hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/nashorn nashorn
              nashorn:   requesting all changes
              nashorn:   adding changesets
              nashorn:   adding manifests
                  jdk:   adding file changes
              nashorn:   adding file changes
              nashorn:   added 2437 changesets with 11585 changes to 2991 files
              nashorn:   updating to branch default
              nashorn:   2772 files updated, 0 files merged, 0 files removed, 0 files unresolved
                  jdk:   added 13428 changesets with 100503 changes to 27823 files
                  jdk:   updating to branch default
                  jdk:   23326 files updated, 0 files merged, 0 files removed, 0 files unresolved
WARNING: hotspot exited abnormally (255)
WARNING: jaxws exited abnormally (255)
WARNING: langtools exited abnormally (255)

其实,下载过程漫长,写作与操作同步,操作一步,写一步  !!!

如果写成一篇文章,显的太长太乱,不便于查看。把它写成续篇 !!!

至此本篇,主要讲了:

1.我的编译环境,VMWare 中 ubuntu 16.04 LTS版本。

2.下载OpenJDK8源码具体操作步骤。

3.通读了,jdk8u编译的说明文档。

下一篇写。正式的编译工作。

 

扫码关注微信,不定期用心推送优质文章。

 

 

原文地址:https://www.cnblogs.com/ncepu/p/13694926.html