博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu14.04LTS编译JDK1.8
阅读量:6914 次
发布时间:2019-06-27

本文共 4874 字,大约阅读时间需要 16 分钟。

一、前言

  最近学习周志明老师的《深入理解Java虚拟机》一书,想要自己编译一个jvm,中间经历了许多波折,故将过程记录下来,希望能帮助到同样想要学习的同学们。

  首先要说明的一点是,按照老师书上编译JDK1.7的步骤,我试了很多次,总是因为各种版本问题而出错,所以改编译JDK1.8。需要注意,编译1.8时会自动识别Bootstrap JDK,也就是说,不需要显示的指定其安装路径,当前也不能取消设置JAVA_HOME和CLASSPATH这两个环境变量,否则会报错。还有就是,编译时的系统不支持Ubuntu16.04

  

*** This OS is not supported: Linux xiaoyao-ubuntu 4.8.0-36-generic #36~16.04.1-Ubuntu SMP Sun Feb 5 09:39:41 UTC 2017 i686 i686 i686 GNU/Linux/usr/local/jdkbuild/openjdk/hotspot/make/linux/Makefile:238: recipe for target 'check_os_version' failed

 

 

 

二、准备工作

1. 编译环境

  • 操作系统:Ubuntu14.04LTS - 32 bit
  • Bootstrap JDK版本:java version "1.8.0_151"
  • Ant版本:Apache Ant(TM) version 1.10.1 compiled on February 2 2017
  • gcc版本:gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

2. 下载openjdk源码

  网址:http://jdk.java.net

  

  选择Java SE 8,往下拉

  点击 zip file,下载源码

三、编译

  这里要提醒一下学习《深入理解Java虚拟机》的同学,编译JDK1.8的步骤和编译1.7的步骤已经大不相同。老师书上说的设置各种环境变量这一步骤在编译1.8的时候可以略去,使用源码包里自带的脚本即可完成

1. 检查环境

  解压刚才下载的源码包,进入解压后的目录,我放的路径是/usr/local/openjdk

1 $ cd /usr/local/openjdk/ 2 $ ll 3 total 436 4 drwxr-xr-x 14 root root   4096 11月  6 09:35 ./ 5 drwxr-xr-x 14 root root   4096 11月  6 09:19 ../ 6 -rwxr-xr-x  1 root root   7399 11月  6 09:35 a.out* 7 -rw-r--r--  1 root root   1503 11月  6 09:19 ASSEMBLY_EXCEPTION 8 drwxr-xr-x  3 root root   4096 11月  6 09:35 build/ 9 drwxr-xr-x  6 root root   4096 11月  6 09:19 common/10 -rw-r--r--  1 root root   1235 11月  6 09:19 configure11 drwxr-xr-x  5 root root   4096 11月  6 09:19 corba/12 -rw-r--r--  1 root root   3095 11月  6 09:19 get_source.sh13 -rw-r--r--  1 root root     70 11月  6 09:19 .hgignore14 -rw-r--r--  1 root root  19280 11月  6 09:19 .hgtags15 drwxr-xr-x  7 root root   4096 11月  6 09:19 hotspot/16 drwxr-xr-x  6 root root   4096 11月  6 09:19 jaxp/17 drwxr-xr-x  6 root root   4096 11月  6 09:19 jaxws/18 drwxr-xr-x  2 root root   4096 11月  6 09:19 .jcheck/19 drwxr-xr-x  6 root root   4096 11月  6 09:19 jdk/20 drwxr-xr-x  6 root root   4096 11月  6 09:19 langtools/21 -rw-r--r--  1 root root  19263 11月  6 09:19 LICENSE22 drwxr-xr-x  6 root root   4096 11月  6 09:19 make/23 -rw-r--r--  1 root root   6232 11月  6 09:19 Makefile24 drwxr-xr-x 12 root root   4096 11月  6 09:19 nashorn/25 -rw-r--r--  1 root root   1549 11月  6 09:19 README26 -rw-r--r--  1 root root 129333 11月  6 09:19 README-builds.html27 drwxr-xr-x  2 root root   4096 11月  6 09:19 test/28 -rw-r--r--  1 root root 178392 11月  6 09:19 THIRD_PARTY_README

  在编译之前大家可以看一下 README 中的内容,里边有说编译步骤

  以下步骤推荐大家获取root权限后操作,不仅可以少打很多sudo,还能避免一些奇怪的问题

  

1 # bash ./configure

  执行此命令后,会自动检测编译环境是否满足条件,再次提醒:不能 unset JAVA_HOME,否则回报找不到jdk的错误

  在命令执行过程中,可能会因为依赖的原因报错而终止,这时不要慌,看一下错误提示,缺什么依赖就安装一下,最后成功的话有如下提示:

 

1 ==================================================== 2 A new configuration has been successfully created in 3 /usr/local/jdkbuild/openjdk/build/linux-x86-normal-server-release 4 using default settings. 5  6 Configuration summary: 7 * Debug level:    release 8 * JDK variant:    normal 9 * JVM variants:   server10 * OpenJDK target: OS: linux, CPU architecture: x86, address length: 3211 12 Tools summary:13 * Boot JDK:       java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) Server VM (build 25.151-b12, mixed mode)  (at /usr/local/java/jdk1.8.0_151)14 * C Compiler:     gcc-5 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 version 20160609 (at /usr/bin/gcc-5)15 * C++ Compiler:   g++-5 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 version 20160609 (at /usr/bin/g++-5)

 

2. 编译

  在编译之前,需要修改源码的一个地方

1 vim /usr/local/openjdk/hotspot/make/linux/makefiles/gcc.make

  在这个文件中,找到“-Werror”这个字符串, 将他所在的行注释掉,否则会报错:cc1plus: warnings being treated as errors

  使用命令make,注意加个参数,否则会报错:cc1plus: error: the "stabs" debug format cannot be used with pre-compiled headers [-Werror=deprecated]

1 make all DEBUG_BINARIES=true

  然后就是漫长的等待......

  最终结果

1 ----- Build times ------- 2 Start 2017-11-06 09:57:30 3 End   2017-11-06 10:45:55 4 00:01:02 corba 5 00:01:04 demos 6 00:04:59 docs 7 00:30:06 hotspot 8 00:01:42 images 9 00:00:28 jaxp10 00:00:48 jaxws11 00:07:56 jdk12 00:00:01 langtools13 00:00:17 nashorn14 00:48:25 TOTAL15 -------------------------16 Finished building OpenJDK for target 'all'

3. 测试

  进入目录/usr/local/openjdk/build/linux-x86-normal-server-release/jdk/bin

  执行./java -version

1 openjdk version "1.8.0-internal"2 OpenJDK Runtime Environment (build 1.8.0-internal-root_2017_11_06_09_35-b00)3 OpenJDK Server VM (build 25.40-b25, mixed mode)

  编译成功

四、可能需要的依赖

1 sudo apt-get -y install build-essential  2  3 sudo apt-get -y install libx11-dev     #注意X是小写, 错误提示里说的是大写 4 sudo apt-get -y install libxext-dev  5 sudo apt-get -y install libxrender-dev  6 sudo apt-get -y install libxtst-dev  7 sudo apt-get -y install libxt-dev 8  9 sudo apt-get -y install libcups2-dev10 sudo apt-get -y install libfreetype6-dev11 sudo apt-get -y install libasound2-dev12 13 sudo apt-get -y install ccache

 

转载于:https://www.cnblogs.com/xiaoyao-lxy/p/7792044.html

你可能感兴趣的文章
Android UI适配总结(一)寻找最佳匹配资源
查看>>
我是小白之<%%>用法
查看>>
F# 入门(十一):链表与数组
查看>>
树套树
查看>>
[IOS笔记] - 关于线程[3]
查看>>
java socket通信-传输文件图片--传输图片
查看>>
Windows 10 远程连接出现函数错误 【这可能由于CredSSP加密Oracle修正】
查看>>
MySQL read_only选项的作用
查看>>
职业方向
查看>>
3DMAX 卸载工具,完美彻底卸载清除干净3dmax各种残留注册表和文件
查看>>
生日蜡烛
查看>>
移山小分队---每日记录01
查看>>
一文读懂机器学习,大数据/自然语言处理/算法全有了……
查看>>
【洛谷P1627】 【CQOI2009】中位数
查看>>
归并排序
查看>>
maven仓库介绍
查看>>
spring的corn表达式
查看>>
数学符号注音
查看>>
linux命令行关机
查看>>
Lync 小技巧-38-Lync Server 2013与Exchange Server高可用环境-集成
查看>>