由于最近需要研究JVM,所以打算先自己build一个openjdk试试,hllvm群组里主要提供的都是基于Xubuntu环境,没有RedHat系的,与我的需求不尽相符,只好自己摸索,好在有RednaxelaFX等大神提供的诸多资料,确实提供了许多帮助,下述如有错误纰漏还望各位大神指正。
废话不多说,环境选择了Fedora
16 (64-bit),OpenJDK的版本是openjdk-7-fcs-src-b147-27_jun_2011.zip,源码下载地址http://download.java.net/openjdk/jdk7/
从一个干净的Fedora 16开始build需要不少准备工作,这里强烈建议直接查看OpenJDK
Build README,网上有些帖子说的乱七八糟的而且来源还都是同一篇,十分误事,我接下来就把我的经验share一下,操作基本来自于这篇build README,我对linux不是很熟,过程中还是废了不少事儿,另外下面所有的都是在root权限下操作的。
- 首先当然必须有最基本的GNU make,最低版本要求是3.81以上,Fedora 16自带的是3.82的版本,所以这个无需操心。
- 我在安装fedora的时候,选择了安装Java开发工具,因此系统默认给我装好了openjdk 1.6.0_24版本,如果没有的话用yum-builddep java-1.6.0-openjdk,用网上帖子的话说:“这是安装一个 jdk 6 在
/usr/lib/jvm/java-openjdk 这个位置。这个JDK 就是所谓的bootstrap jdk了. 因为在编译openjdk7 的时候java 部分的代码就是这个来编译的了。”
- 修改 /root/openjdk/hotspot/make/linux下的Makefile文件,注释掉以下内容
check_os_version:
#ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
# $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1;
#endif
这一部分我是在最开始的时候就按照这里说的把这几行给注释掉了,没有亲测,所以也不知道不注释的话到底会不会发生问题。
- 设置环境变量,进入你下载的openjdk7解压后的文件夹,在shell里输入. jdk/make/jdk_generic_profile.sh,这个是你的bash/sh/ksh的setup文件,执行这条命令之后那些LANG、ALT_BOOTDIR等环境变量都会为你设置好,就不用再自己一条一条地export了。
- 接下来按照Basic Linux System Setup部分给出的Basic Linux Check List
Basic Linux Check List
1. Install the Bootstrap JDK, set ALT_BOOTDIR.
2. Optional Import JDK, set ALT_JDK_IMPORT_PATH.
3. Install or upgrade the FreeType development package.
4. Install Ant 1.7.1 or newer, make sure it is in your PATH.
第一条是指构建openjdk的工作需要一个预先安装好的JDK环境用来做引导,由于我们已经的系统里已经装好了openjdk 6,而且环境变量已设置好,所以就不用管了。
第二条里的ALT_JDK_IMPORT_PATH环境变量是在你不需要build整个JDK的时候用到,比如你之前编过整个JDK,这次你不想再build Hotspot虚拟机了,那么你就可以通过这个来设置。
第三条是要求安装FreeType,README里提供的是源码安装的方法,但是通过yum提供了FreeType软件包,所以用yum安装会更方便一些,安装命令:yum install freetype-devel.x86_64
第四条是要求安装Apache Ant,README给的方法是下载源码安装,具体的可以到Ant的官网http://ant.apache.org/去看,源码和安装方法都能找到,我由于之前安装系统是勾选了Java开发那栏,因此Ant貌似已经有了,我没有再手动安装。
- 弄完了这些你以为就已经完成了吗?No,太naïve了!我以为这些就是Linux Fedora需要的全部dependency了,于是进入到openjdk目录下,执行命令make sanity检查build dependency,结果报出的错误是少了ALSA、CUPS的一些头文件。我擦,CUPS不是明明列在了Solaris的Basic Check List下吗!好吧,那就一个个解决吧。
- 安装ALSA:yum install alsa-lib-devel.x86_64
- 从CUPS(Common UNIX Printing System)官网下载了cups-1.6.1-source.tar.bz2源码,把解压后的目录下的cups文件夹copy到/usr/include/下
接下来make sanity,出现Sanity check passed.通过!终于可以make了,是不是很激动?别急,蛋疼的在后面呢。于是我执行命令make all,它就开始编译了,很久之后,如你所料了,挂了,看问题,貌似是x11没有安装,这是个啥啊,于是我到README里去找,结果发现原来是XRender这玩意,这不是也是在Solaris的Basic Check List里的吗…
没辙,README里推荐的方法是“使用各特定的Linux版本所提供的包安装”。好吧,yum search xrender,没有精确匹配的,于是找了个最像的安装,yum install libXrender-devel.x86_64。
然后继续make,很久之后,down了,报错是“X11/Intrinsic.h: No such file or directory”,这你妈,又是x11的问题…好吧,一定是我安装的方式不对,于是各种yum search,没有啊!无奈google之,找了半天在一个fedora论坛的一篇帖子里看到可能是少了一个叫libXt-devel的包,search之,果然有,于是yum install libXt-devel.x86_64。
继续make,很久之后,没错你懂的,down了,报错“X11/extensions/shape.h: No such file or directory”。小弟很淡定,一定是我make的诚意不够,google之,发现这次可能是少了个libXtst-devel的包,小事,装之,yum
install libXtst-devel.x86_64。
继续make,这次过了更久,不过,成功了~
-- Build times ----------
Target debug_build
Start 2013-01-06 19:27:18
End 2013-01-06 20:56:11
00:06:14 corba
00:17:04 hotspot
00:15:16 jaxp
00:15:32 jaxws
00:32:47 jdk
00:01:59 langtools
01:28:53 TOTAL
-------------------------
make[1]: Leaving directory `/root/openjdk'
因此上面的步骤可以总结为:
yum install libXrender-devel.x86_64
yum install libXt-devel.x86_64
yum install libXtst-devel.x86_64
- 编译成功之后在openjdk目录下会产生一个build文件夹,cd ./build/linux-amd64/bin/,运行./java –version:
openjdk version "1.7.0-internal-debug"
OpenJDK Runtime Environment (build 1.7.0-internal-debug-yuyinyang_2013_01_06_19_08-b00)
OpenJDK 64-Bit Server VM (build 21.0-b17-jvmg, mixed mode)
分享到:
相关推荐
在Fedora 8上,可以使用`yum`命令来安装缺失的依赖,如`sudo yum install openjdk* xcb*`. 2. **手动安装libxcb**:如果通过`yum`找不到`libxcb`,可能需要从源代码编译安装。首先,从官方仓库下载libxcb的源代码,...
在Linux环境下安装Java是许多开发者和系统管理员的基本任务,无论是为了开发Java应用程序,还是为了运行基于Java技术的服务器。在本篇文章中,我们将深入探讨如何在Linux系统上安装Java,包括从源码编译和使用预编译...
安装OpenJDK的过程主要依赖于`yum`包管理器,这是CentOS和Fedora等基于RedHat的Linux发行版的标准工具。以下是安装步骤: 1. 打开终端并以root用户身份登录,因为安装Java通常需要管理员权限。 2. 使用`yum search...
对于 Fedora 20 / x86_64 - 有关更多详细信息/替代架构,请参阅 您需要确保安装了一些软件包 - 以 root 身份执行以下操作: yum install java-1.7.0-openjdk mercurial freetype-devel cups-devel gcc gcc-c++ p7...
本文将详细介绍如何在Linux环境下安装JDK,以及配置相应的环境变量,确保Java程序能够顺利运行。 首先,你需要选择适合你的Linux发行版的JDK版本。Oracle公司提供了适用于Linux的JDK,但现在也提供了OpenJDK作为...
欢迎来到转储矿石词典! 编译 安装 Java Java JDK 用于编译 Dump OreDictionary。 下载并安装 Java JDK。 。 向下滚动,接受Oracle Binary Code License ... Fedora: yum install java-1.7.0-openjdk 设置环境
欢迎使用 InGame Mod 配置!... Gentoo: emerge dev-java/oracle-jdk-bin Archlinux: pacman -S jdk7-openjdk Ubuntu/Debian: apt-get install openjdk-7-jdk Fedora: yum install java-1.7.0-openjdk 设
欢迎使用配置补丁程序! 编译 安装 Java Java JDK用于编译Config Patcher。 下载并安装 Java JDK。 。 向下滚动,接受Oracle Binary Code License ... Fedora: yum install java-1.7.0-openjdk 设置环境。 Wind
欢迎使用扩展修复程序! 编译 安装 Java Java JDK 用于编译 Extension Fixer。 下载并安装 Java JDK。 。 向下滚动,接受Oracle Binary Code License ... Fedora: yum install java-1.7.0-openjdk 设置环境。 W
Gentoo: emerge dev-java/oracle-jdk-bin Archlinux: pacman -S jdk7-openjdk Ubuntu/Debian: apt-get install openjdk-7-jdk Fedora: yum install java-1.7.0-openjdk 设置环境。 Windows:为 JDK 设
Oracle JDK 11.0.15 是Oracle公司发布的一个重要的Java开发工具包,它是Java Development Kit (JDK) 的一个版本,用于支持Java应用程序的开发、编译和运行。这个版本是针对Java 11的,Java 11是一个长期支持(LTS)...
欢迎来到Arrow Flight Path! 编译 安装 Java Java JDK用于编译Arrow Flight Path。 下载并安装 Java JDK。... Ubuntu/Debian: apt-get install openjdk-7-jdk Fedora: yum install java-1.7.0-openj
欢迎来到简介! - 对于那些想要最新的未发布功能的人-... Gentoo: emerge dev-java/oracle-jdk-bin Archlinux: pacman -S jdk7-openjdk Ubuntu/Debian: apt-get install openjdk-7-jdk Fedora: yum install java-1.7.0
2. **RPM安装包**:RPM (Red Hat Package Manager) 是Linux发行版如Fedora、CentOS等常用的软件包管理格式。对于这些系统,您可以使用`rpm -ivh jdk-8.rpm`命令来安装JDK,其中`-i`代表安装,`-v`是详细模式,`-h`是...
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm rpm -ivh epel-release-latest-7.noarch.rpm ``` 如果你的系统已经安装了最新的EPEL仓库,则无需再次安装。可以使用以下命令...
在Linux环境中,Java开发工具包(JDK)是必不可少的工具之一,它为开发者提供了编译、运行Java应用程序的能力。对于基于Red Hat的Linux发行版(如CentOS、Fedora等),通过`yum`(Yellowdog Updater Modified)包...
8. **维护与更新**: 虽然JDK7已经停止了官方支持,但开源社区如OpenJDK仍在维护其分支。开发者应考虑升级到更安全、功能更丰富的JDK版本,如JDK8、JDK11或更高版本,以获取持续的安全更新和支持。 总之,Linux JDK7...
- 卸载Fedora自带的OpenJDK,因为我们将安装Oracle的JDK。使用`sudo dnf remove java-openjdk`命令来卸载。 - 安装Oracle JDK,可以从Oracle官网下载适用于Linux的JDK包,然后通过`tar`命令解压并配置环境变量。 ...
此外,根据开发需求,可能还需要配置IDE(如IntelliJ IDEA或Eclipse)的Java版本,以及构建工具(如Maven或Gradle)的Java编译目标版本。 总的来说,无论你是Windows还是Linux用户,这个压缩包都提供了便捷的JDK11...
3. **使用 AdoptOpenJDK 或 Azul Zulu**:这两个项目提供预编译的OpenJDK版本,可以直接下载对应Linux系统的tar.gz文件,解压后进行安装,步骤与手动安装类似。 安装完成后,可以通过`java -version`和`javac -...