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:

步骤2:下载源码

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那里):

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

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

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

运行

./setup.sh

设置一遍就好。

步骤4:进行编译

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

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

原文地址:https://www.cnblogs.com/mozi-song/p/9174114.html

时间: 2024-11-14 07:26:13

Ubuntu轻松编译openJDK的相关文章

配置android source 在ubuntu中编译环境

在Ubuntu中可以配置 android source 编译环境,推荐使用最新的64位的Ubuntu  LTS(Long Time Support); 1.安装JDK. AOSP主分支代码需要java7,在Ubuntu上可以使用 OpenJDK. 安装java7的命令: $ sudo apt-get update $ sudo apt-get install openjdk-7-jdk 如果系统中已安装有java环境,可以将其进行更新: $ sudo update-alternatives --

JVM之编译OpenJDK

学习JVM时看到书里讲到自己编译OpenJDK.记录一下过程 Mac系统版本:High Sierra 10.13.6 源码版本:jdk8u-dev 一.准备源码 我是从官网下载网站的,openJDK源码是用mercurial进行管理的,所以首先使用homebrew安装mercurial brew install mercurial 安装完成之后,再运行命令克隆jdk源码,之后通过运行脚本get_source.sh获取所有的源代码 hg clone http://hg.openjdk.java.n

在Ubuntu下编译Assimp库

在Ubuntu下编译Assimp库 如何在Ubuntu下编译Assimp库?这是我以前编译成功后做的笔记,供参考. 1.去下面的网站去下载Assimp库: http://assimp.sourceforge.net/ 2.安装cmake,似乎Assimp库只能通过cmake和vs工程文件进行构建,普通的makfile是通过它来产生的.Ubuntu下使用sudo apt-get install cmake.然后通过cmake --version查看cmake的版本,我cmake版本是2.8.11.

ubuntu系统 编译libxml2的库是遇到如下错误

大家好:     我买了细说PHP书来学习.在搭建环境时使用的是ubuntu系统 编译libxml2的库是遇到如下错误, In function 'open',     inlined from 'xmlNanoHTTPSave__internal_alias' at nanohttp.c:1588:12: /usr/include/x86_64-linux-gnu/bits/fcntl2.h:51:24: error: call to '__open_missing_mode' declare

ubuntu下编译java程序

ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } 编译: javac HelloWorld.java 此时会在当前文件夹生成 HelloWorld.class

Ubuntu下编译3.0.4内核

Ubuntu下编译3.0.4内核 Linux内核3.0版本发布已有一段时间了,不知道这个版本号大跃进的内核是否好用.目前各个发行版的linux还仍未采用3.0的内核,因此可以自己动手编译内核来感受一下!趁着这次编译内核的机会可以再熟悉一下编译内核的步骤. 1.下载并解压内核到任意目录 从源码官网下载最新的内核源码3.0.4,可以解压至任意目录,我放在主目录下: 1 ~$ tar xjvf linux-3.0.4.tar.bz2 2.配置内核 对内核进行配置是为了得到内核配置文件.config.通

在Ubuntu下面编译WizNote Qt Project

编译环境 Ubuntu 12.04 (32或者64位) 安装Git sudo apt-get install git 安装编译工具 sudo apt-get install build-essential 安装cmake sudo apt-get install cmake 安装qt4 sudo apt-get install libqt4-devsudo apt-get install qtcreator 注意: 目前暂时不支持Qt5 安装zlib sudo apt-get install z

Ubuntu下编译Android JNI实例全过程

第一步:保证make和gcc可用 在shell中输入make-v,不报错就是对的.(可参考http://wenku.baidu.com/view/d87586c24028915f804dc24a.html.) 在shell中输入gcc-v,不报错就是对的. 第二步:安装NDK 下载NDK后,设置环境变量: 将android-ndk的路劲加到环境变量PATH中:sudogedit /etc/environment 然后再让这个更改的环境变量立即生效:source /etc/environment

《Swift入门》ubuntu下编译运行Swift开发的Web后端示例

这里只是演示如何在ubuntu下编译运行Swift开发的Web后端项目. 项目代码来自Bluemix上提供的示例代码,如果你有账号,可以去自己的空间下载,没有的话,可以通过下面的地址下载: http://download.csdn.net/detail/testcs_dn/9513395 编译环境安装配置请参考:Ubuntu 14 server安装Swift运行环境 环境配置好之后,将下载的示例代码解压出来: 主要代码是"main.swift",内容如下: /** * Copyrigh