服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Ubuntu - Ubuntu如何轻松编译openJDK详解

Ubuntu如何轻松编译openJDK详解

2022-07-07 10:00mozi_song Ubuntu

这篇文章主要给大家介绍了关于Ubuntu如何轻松编译openJDK的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

花了三天在windows上搞openJDK,对bash本来就不熟,加上各种莫名依赖和脚本里的bug,身心俱疲。最后make all的时候产生一个莫名其妙的错误说什么有warning且-Werror置为了true,死活没google到-Werror是什么鬼,只好作罢了。

今天本菜鸟突然想起来,朕还有Ubuntu虚拟机,权且一试,没想到轻松成功。

平台:Ubuntu Version 5.1.30 (3.2.0-98-generic-pae #138-Ubuntu SMP Mon Jan 11 13:11:12 UTC 2016 i686 i686 i386 GNU/Linux)

步骤1:(按照《深入理解Java虚拟机》中的命令)一键下载依赖

?
1
sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant

这里写的不一定全,不过暂且先装着,后面如果缺少什么依赖可以再按提示安装,一个佛系程序员的一天就是见招拆招。

openJDK的源代码有C++也有Java,所以需要一个Bootstrap JDK去编译Java的部分。这个JDK通常是比你要编译的openJDK早一个版本的官方JDK,这是官方的README-builds(在第二步中下载下来的源码根目录下)说的:

...The general rule is that the bootstrap JDK must be an instance of the previous major release of the JDK.

每一个版本的README-builds中都会指明这一版的openJDK需要的Bootstrap JDK具体版本,比如openJDK8需要的是JDK7u7以上的版本,但不能是JDK8:

Ubuntu如何轻松编译openJDK详解

步骤2:下载源码

?
1
2
3
4
sudo hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev/
cd jdk8u-dev
chmod 755 get_source.sh
./get_source.sh

用mercurial下载jdk8u的最新源码。小伙伴如果想下载其它版本的源码可以去这里browse: http://hg.openjdk.java.net/。这个下载过程大约三十分钟。

如果不想用mercurial,也可以在这里下载zip包:http://jdk.java.net/java-se-ri/8 (在网页偏下方RI source code那里):

Ubuntu如何轻松编译openJDK详解

我在windows上编译是就是用这个zip包解压编译的,最后失败了。出于迷信心理,在Ubuntu上我还是决定用mercurial下载,各路大神尽可不必理会。

步骤3:设置环境变量新建一个setup.sh,把以下的内容拷贝进去:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
export LANG=C
 
#BootStrap-JDK的安装路径,替换为自己bootstrap-JDK的路径
 
export ALT_BOOTDIR=/usr/lib/jvm/java-7-oracle-1.7.0.80
 
export ALLOW_DOWNLOADS=true
 
export HOTSPOT_BUILD_JOBS=8
 
export SKIP_COMPARE_IMAGES=true
 
#要编译的内容,读者可以根据需要自行选择
 
export BUILD_LANGTOOLS=true
 
#export BUILD_JAXWS=false
 
#export BUILD_JAXP=false
 
#export BUILD_CORBA=false
 
export BUILD_HOTSPOT=true
 
export BUILD_JDK=true
 
export SKIP_COMPARE_IMAGES=true
 
BUILD_DEPLOY=false
 
BUILD_INSTALL=false
 
#编译结果存放的路径,建议存放在openjdk源码中build文件夹
 
export ALT_OUTPUTDIR=/usr/dev/jvm/openjdk/build
 
#这两个环境变量需要去掉,不然会出问题
 
unset JAVA_HOME
 
unset CLASSPATH

运行

?
1
./setup.sh

设置一遍就好。

步骤4:进行编译

到下好的openJDK源码的根目录下运行make,大概需要二三十分钟。本来是应该运行make sanity的,但是我又碰到了这个错误……

Ubuntu如何轻松编译openJDK详解

妈哟什么鬼,搜了一会无甚结果,于是鸡贼的跳过了这一步直接运行make,竟然成功了,成功后的输出长这样:

Ubuntu如何轻松编译openJDK详解

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。

原文链接:http://www.cnblogs.com/mozi-song/p/9174114.html

延伸 · 阅读

精彩推荐
  • Ubuntuubuntu下用dpkg命令行运行deb安装包的方法

    ubuntu下用dpkg命令行运行deb安装包的方法

    在Ubuntu系统中,除了通过桌面启动deb安装包外,还能通过命令行来运行deb安装包,需要使用到dpkg命令,下面这篇文中就给大家介绍下Ubuntu下使用dpkg命令运...

    ubuntu教程网9212021-12-23
  • UbuntuUbuntu系统中WPS不能输入中文该怎么办?

    Ubuntu系统中WPS不能输入中文该怎么办?

    Ubuntu系统中WPS不能输入中文该怎么办?Ubuntu系统中安装了wps,但是在编辑文件的时候发现不能输入中文,该怎么办呢?下面我们就来看看详细的教程,需要...

    Ubuntu之家4562019-06-19
  • Ubuntuubuntu开启root权限和禁用root帐号的方法

    ubuntu开启root权限和禁用root帐号的方法

    这篇文章主要介绍了ubuntu开启root权限和禁用root帐号的方法,需要的朋友可以参考下...

    未知3582019-05-20
  • UbuntuUbuntu解决火狐浏览器无法同步书签的问题【推荐】

    Ubuntu解决火狐浏览器无法同步书签的问题【推荐】

    最近在ubuntu系统中使用自带的firefox浏览器,发现有写问题,添加书签功能无法使用,下面小编给大家带来了Ubuntu解决火狐浏览器无法同步书签的问题,感兴...

    Ubuntu教程网3732022-03-10
  • UbuntuUbuntu14.04虚拟机安装(图文详解)

    Ubuntu14.04虚拟机安装(图文详解)

    本篇文章主要介绍了Ubuntu14.04虚拟机安装,每一步都有详细的图文解释,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。...

    用心灵拥抱世界5282021-12-21
  • Ubuntuubuntu系统怎么升级至18.04LTS版本?

    ubuntu系统怎么升级至18.04LTS版本?

    ubuntu系统怎么升级至18.04LTS版本?ubuntu系统想要升级一下版本,该怎么升级到18.04LTS版本呢?下面我们就来看那看详细的教程,需要的朋友可以参考下 ...

    百度经验6102019-12-10
  • Ubuntu单网卡Ubuntu服务器打造 PPTP Server

    单网卡Ubuntu服务器打造 PPTP Server

    自从实验室放了台 Linux 服务器后,可玩的东西就越来越多了。虽然这台服务器主要的工作是 Web Server,但鉴于我们那小站压力非常之小,服务器资源绝大多...

    Ubuntu教程网2362019-11-28
  • Ubuntu在Ubuntu Linux上安装和使用Git和GitHub

    在Ubuntu Linux上安装和使用Git和GitHub

    今天小编就为大家分享一篇关于在Ubuntu Linux上安装和使用Git和GitHub的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一...

    Akshay Pai3852020-08-18