1.编译JDK

linux环境下编译jdk7u-dev
系统版本:
CentOS Linux release 7.3.1611 (Core)
CPU:
1 Intel® Xeon® CPU E5-26xx v4

步骤:

准备工作:

安装依赖:
yum install -y mercurial
yum install -y ant ant-nodeps
yum install -y libX11* libX*
yum install -y libXi-devel libXtst-devel libXt-devel freetype* 
yum install -y alsa-lib-devel cups-devel
yum install -y gcc gcc-c++
下载需要编译的jdk:
hg clone http://hg.openjdk.java.net/jdk7u/jdk7u-dev
cd jdk7u-dev
chmod 755 get_source.sh 
./get_source.sh 
调整编译参数:
#语言选项,这个必须设置,否则编译好后会出现一个HashTable的NPE错
export LANG=C
#Bootstrap JDK的安装路径。必须设置
export ALT_BOOTDIR=/jvm/jdk1.7.0_80

#允许自动下载依赖
export ALLOW_DOWNLOADS=true

#并行编译的线程数,设置为和CPU内核数量一致即可
export HOTSPOT_BUILD_J0BS=1
export ALT_PARALLEL_COMPILE_JOBS=1

#比较本次build出来的映像与先前版本的差异。这对我们来说没有意义, 
#必须设置为false,香则sanity检查会报缺少先前版本JDK的映像的错误提示。 
#如桌已经设置dev或者DEV_ONLY=true,这个不显式设置也行
export SKIP_COMPARE_IMAGES=true

#使用预编译头文件,不加这个编译会更慢一些
export USE_PRECOMPILED_HEADER=true

#要编译的内容
export BUILD_LANGTOOLS=true
#export BUILD_JAXP=false
#export BUILD_JAXWS=fa1se
#export BUILD_CORBA=false
export BUILD_HOTSPOT=true
export BUILD_JDK=true

#要编译的版本
#export SKIP_DEBUG_BUILD=false
#export SKIP_FASTDEBUG_BUILD=true
#export DEBUG_NAME=debug

#把它设置为false可以避开javaws和浏览器Java插件之类的部分的build
BUILD_DEPLOY=false

#把它设置为false就不会build出安装包。因为安装包里有些奇怪的依赖, 
#但即便不build出它也已经能得到完整的JDK映像,所以还是别build它好了
BUILD_INSTALL=false

#编译结果所存放的路径
export ALT_OUTPUTDIR=/jvm/jdk7u-dev/build

#这两个环境变量必须去掉,不然会有很诡异的事情发生(我没有具体查过这些 "诡异的
#事情” ,Makefile脚本裣查到有这2个变量就会提示警告)
unset JAVA_HOME
unset CLASSPATH

. VAR 配置参数

重要步骤!!!:

调整swap分配区域,因为服务器是一核2G的云服务器,编译时会cpu直接占满百分之百,若swap区域不足会导致编译失败

dd if=/dev/zero of=/tmp/mem.swap bs=1M count=4096
mkswap /tmp/mem.swap
swapon /tmp/mem.swap

开始编译

make sanity
若检查通过则
make
等待成功
笔者所用服务器用时1小时20min…
完成后修改java home 等环境变量,并卸载之前的环境变量

 rm -f /usr/bin/java
 rm -f /usr/bin/javac
 rm -f /etc/alternatives/java
 rm -f /etc/alternatives/javac

之后使配置生效
source /etc/profile
查看java版本,编译成功

[root@VM_0_2_centos ~]# java -version
openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-root_2018_11_26_11_35-b00)
OpenJDK 64-Bit Server VM (build 24.80-b07, mixed mode)

可能出现的错误:

/usr/bin/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status

解决方法:

yum  install libstdc++-devel.x86_64 libstdc++.x86_64  compat-libstdc++-33.x86_64 libstdc++-static.x86_64
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值