[笔记]Java虚拟机精讲笔记 -- 编译自己OpenJdk

本文详细介绍如何在Ubuntu 12.04上从源代码编译OpenJDK,包括环境搭建、配置脚本及常见问题解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译OpenJdk

下载和配置环境

本人使用 ubuntu-12.04.5-alternate-i386.iso

下载OpenJdk源代码

http://openjdk.java.net/
直接下载地址:http://download.java.net/openjdk/jdk7u40/promoted/b43/

构建编译环境

sudo apt-get install build-essential gawk m4 openjdk-6-jdk libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant
Loaded plugins: fastestmirror, refresh-packagekit

以上环境依赖下载完之后,最好能安装下gcc4.4或则以上的版本,和G++


设置环境变量

在解压的根目录中新创建一个shell脚本,方便执行编译。
然后用 make sanit 命令来验证变量是否配置正确。如果运行完成之后,最后一行是 Sanity check passed. 则环境变量配置正确了(由于本人对linux不太熟悉,make sanit命令的话,shell脚本又没有被执行,貌似设置的环境变量都没有生效?这个直接开始编译就好)

#!/bin/sh
#(必配置项)设定语言选项#
export LANG=c
#(必配置项)设置编译该OpenJdk的Jdk目录,用OpenJdk如果出错,就用oracle的jdk代替#
export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk
#允许在编译过程中自动下载相关依赖#
export ALLOW_DOWNLOADS=true
#并行编译策略时的线程数量开启#
export HOST_BUILD_JOBS=4

#使用预编译头文件,加速编译#
export USE_PRECOMPILED_HEADER=true

#编译内容,如果不设置,则编译OpenJdk中的所有内容,耗时太长#
export BUILD_LANGTOOLS=true
export BUILD_JAXP=true
export BUILD_JAXWS=true
export BUILD_CORBA=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true
BUILD_INSTALL=false

#编译后的存储路径#
export  ALT_OUTPUTDIR=/home/jvm/openjdk7/build
#忽略经过信息?#
WARNINGS_ARE_ERRORS=true
#把构建日志放入指定的log中,但是要先创建该文件目录#
make 2>&1 | tee /home/jvm/openjdk7/build-log/openjdk.log

开始编译

开始编译命令:用sudo bash fileName.sh 来执行脚本。(一定要是root权限sudo)

#-- Build times ----------
Target all_product_build
Start 2015-05-23 20:20:58
End   2015-05-23 20:35:09
00:00:05 corba
00:00:11 hotspot
00:00:02 jaxp
00:00:02 jaxws
00:13:48 jdk
00:00:03 langtools
00:14:11 TOTAL
-------------------------
make[1]: Leaving directory `/home/jvm/app/openjdk'

出现以上界面,就表示已经编译完成了
sh脚本中配置的ALT_OUTPUTDIR目录,就是已经编译好的jdk,进入该目录中的bin,运行以下命令查看我们自己编译好的jdk版本

./java -version

编译失败问题

1 . Unable to load native library: /home/mengxiansen/program/java/jdk1.7.0_10/jre/lib/amd64/libjava.so: symbol JVM_SetNativeThreadName, version SUNWprivate_1.1 not defined in file libjvm.so with link time reference

出现以上问题,可以尝试使用使用Oracle的jdk6代替jdk7编译openjdk


2 . 替换成oracle的jdk之后,出现Error: time is more than 10 years from present: 1104530400000,把以下文件中的时间修改成2010年
如果没有找到该文件,就全盘搜索
/proc/2541/cwd/jdk/src/share/classes/java/util/CurrencyData.properties

534 # TURKEY  
535 TR=TRL;2010-12-31-22-00-00;TRY
### 回答1: java-7-openjdk-amd64虚拟机不存在,可能是由于以下原因所致: 1. 您使用的操作系统不兼容java-7-openjdk-amd64虚拟机,需要使用其他版本的虚拟机; 2. 您的系统中未安装java-7-openjdk-amd64虚拟机,您可以尝试安装该虚拟机或者使用其他可用的虚拟机; 3. 如果您使用的是云服务器,可能需要联系云服务提供商进行设置或安装java-7-openjdk-amd64虚拟机。 建议您可以尝试通过检查操作系统兼容性、安装虚拟机或者联系云服务提供商等方式来解决该问题,以确保您能够正常使用所需的虚拟机。 ### 回答2: Java-7-OpenJDK-AMD64虚拟机不是一种存在的虚拟机OpenJDK是一个开源的Java开发工具包,它包含了Java虚拟机Java类库和其他工具。但是,OpenJDK并没有一个特定的版本叫做Java-7-OpenJDK-AMD64虚拟机。也许您在尝试安装某个应用程序或软件时看到了这个错误消息,这意味着该程序需要Java虚拟机来运行,但是您可能尝试安装了错误的Java版本或操作系统。正确安装Java虚拟机后,您应该能够运行需要它的应用程序或软件。建议您检查所需的Java版本和操作系统,以确保您下载了正确的Java虚拟机。 ### 回答3: Java-7-openjdk-amd64虚拟机是指OpenJDK 7版本的Java虚拟机,支持64位的AMD等处理器架构。如果您在使用该虚拟机时发现它不存在,可能是以下原因导致: 1. 您尚未安装该虚拟机。您可以通过sudo apt-get install openjdk-7-jdk命令在Ubuntu上安装该虚拟机。 2. 该虚拟机已被您卸载或删除。您可以通过sudo apt-get remove openjdk-7-jdk命令在Ubuntu上卸载该虚拟机。 3. 您所使用的操作系统版本不支持该虚拟机或者该虚拟机已过时,建议使用更稳定、更新的版本,比如OpenJDK 8、OpenJDK 11等版本。 在进行Java开发时,选择适合自己的Java虚拟机非常重要,建议根据需要选择合适的开发环境和Java版本。需要注意的是,OpenJDK不同版本的Java虚拟机可能存在不同的特性和性能,您可以根据自己的需要进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值