CentOS 6.5 编译 openJDK


其实我在使用Cent OS编译之前,我曾用ubuntu14.04编译过,但是出现很多错误,然后百度了一下好像是因为内核版本太高;然后我就用CentOS 6.5编译,一次成功,简直不敢相信会这么顺利...


网上有很多关于编译openJDK的文章,不过这是我第一次成功的编译openJDK,记下来以备后用!

基本步骤如下:

1. 下载软件包: http://download.java.net/openjdk/jdk7/

直接解压就好了,生成jdk7目录;

PS:这个OpenJDK 7在2011年6月份就再也没有更新了,所以下载下来不需要再去更新源代码了

2. 执行命令:yum-builddep java-1.7.0-openjdk

因为编译openJDK需要很多依赖,这种方法是最简单的,它可以解决编译JDK所有的依赖;

不过还有一些需要自己安装:libXi-devel freetype-devel

3. 设置如下的环境变量:

export LANG=C
export LC_ALL=C
export ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0/
export ALLOW_DOWNLOADS=true
export USE_PRECOMPILED_HEADER=true
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug 
unset JAVA_HOME
unset CLASSPATH 

4. 执行检查:

make sanity

我是比较顺利的,一次通过!我把Cent OS上的sanity日志贴到这里:

make sanity
( cd  ./jdk/make && \
	  make sanity HOTSPOT_IMPORT_CHECK=false JDK_TOPDIR=/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/jdk JDK_MAKE_SHARED_DIR=/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/jdk/make/common/shared EXTERNALSANITYCONTROL=true SOURCE_LANGUAGE_VERSION=7 TARGET_CLASS_VERSION=7 MILESTONE=internal BUILD_NUMBER=b00 JDK_BUILD_NUMBER=b00 FULL_VERSION=1.7.0-internal-root_2014_12_18_16_31-b00 PREVIOUS_JDK_VERSION=1.6.0 JDK_VERSION=1.7.0 JDK_MKTG_VERSION=7 JDK_MAJOR_VERSION=1 JDK_MINOR_VERSION=7 JDK_MICRO_VERSION=0 PREVIOUS_MAJOR_VERSION=1 PREVIOUS_MINOR_VERSION=6 PREVIOUS_MICRO_VERSION=0 ARCH_DATA_MODEL=64 COOKED_BUILD_NUMBER=0 ALT_OUTPUTDIR=/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64 ALT_LANGTOOLS_DIST=/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist ALT_CORBA_DIST=/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/corba/dist ALT_JAXP_DIST=/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/jaxp/dist ALT_JAXWS_DIST=/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/jaxws/dist ALT_HOTSPOT_IMPORT_PATH=/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/hotspot/import BUILD_HOTSPOT=true ; )
/bin/sh: line 0: [: /bin/sh:: integer expression expected
/bin/sh: line 0: [: /bin/sh:: integer expression expected
/bin/sh: line 0: [: /NO_BOOTDIR/bin/java:: integer expression expected
/bin/sh: line 0: [: /NO_BOOTDIR/bin/java:: integer expression expected
/bin/sh: line 0: [: No: integer expression expected
/bin/sh: line 0: [: No: integer expression expected
make[1]: Entering directory `/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/jdk/make'
make[1]: Leaving directory `/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/jdk/make'

Build Machine Information:
   build machine = labserver

Build Directory Structure:
   CWD = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk
   TOPDIR = .
   LANGTOOLS_TOPDIR = ./langtools
   JAXP_TOPDIR = ./jaxp
   JAXWS_TOPDIR = ./jaxws
   CORBA_TOPDIR = ./corba
   HOTSPOT_TOPDIR = ./hotspot
   JDK_TOPDIR = ./jdk

Build Directives:
   BUILD_LANGTOOLS = true 
   BUILD_JAXP = true 
   BUILD_JAXWS = true 
   BUILD_CORBA = true 
   BUILD_HOTSPOT = true 
   BUILD_JDK    = true 
   DEBUG_CLASSFILES =  
   DEBUG_BINARIES =  

Hotspot Settings: 
      HOTSPOT_BUILD_JOBS  =  
      HOTSPOT_OUTPUTDIR   = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/hotspot/outputdir 
      HOTSPOT_EXPORT_PATH = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/hotspot/import 
 



Bootstrap Settings:
  BOOTDIR = /NO_BOOTDIR
    ALT_BOOTDIR = 
  BOOT_VER = /bin/sh: /NO_BOOTDIR/bin/java: No such file or directory [requires at least 1.6]
  OUTPUTDIR = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64
    ALT_OUTPUTDIR = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64
  ABS_OUTPUTDIR = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64
 
Build Tool Settings:
  SLASH_JAVA = /NOT-SET
    ALT_SLASH_JAVA = 
  VARIANT = OPT
  JDK_DEVTOOLS_DIR = /NOT-SET/devtools
    ALT_JDK_DEVTOOLS_DIR = 
  ANT_HOME = 
  UNIXCOMMAND_PATH = /bin/
    ALT_UNIXCOMMAND_PATH = 
  COMPILER_PATH = /usr/bin/
    ALT_COMPILER_PATH = 
  DEVTOOLS_PATH = /usr/bin/
    ALT_DEVTOOLS_PATH = 
  UNIXCCS_PATH = /usr/ccs/bin/
    ALT_UNIXCCS_PATH = 
  USRBIN_PATH = /usr/bin/
    ALT_USRBIN_PATH = 
  COMPILER_NAME = GCC4
  COMPILER_VERSION = GCC4
  CC_VER = 4.4.7 [requires at least 4.3.0]
  ZIP_VER = 3.0 [requires at least 2.2]
  UNZIP_VER = 6.00 [requires at least 5.12]
  ANT_VER = 1.7.1 [requires at least 1.7.1]
  TEMPDIR = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/tmp
 
Build Directives:
  OPENJDK = true
  USE_HOTSPOT_INTERPRETER_MODE = 
  PEDANTIC = 
  DEV_ONLY = 
  NO_DOCS = 
  NO_IMAGES = 
  TOOLS_ONLY = 
  INSANE = 
  COMPILE_APPROACH = parallel
  PARALLEL_COMPILE_JOBS = 2
    ALT_PARALLEL_COMPILE_JOBS = 
  FASTDEBUG = 
  COMPILER_WARNINGS_FATAL = false
  COMPILER_WARNING_LEVEL = 
  SHOW_ALL_WARNINGS = 
  INCREMENTAL_BUILD = false
  CC_HIGHEST_OPT = 
  CC_HIGHER_OPT = 
  CC_LOWER_OPT = 
  CXXFLAGS =  -O2 -fPIC -DCC_NOEX -W -Wall  -Wno-unused -Wno-parentheses -fno-omit-frame-pointer -D_LITTLE_ENDIAN  
  CFLAGS =  -O2   -fno-strict-aliasing -fPIC -W -Wall  -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer -D_LITTLE_ENDIAN  
  BOOT_JAVA_CMD = /NO_BOOTDIR/bin/java -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -Xmx512m -Xms512m -XX:PermSize=32m -XX:MaxPermSize=160m
  BOOT_JAVAC_CMD = /NO_BOOTDIR/bin/javac  -J-XX:ThreadStackSize=1536 -J-XX:-PrintVMOptions -J-XX:+UnlockDiagnosticVMOptions -J-XX:-LogVMOutput -J-Xmx512m -J-Xms512m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -encoding ascii -source 6 -target 6 -XDignore.symbol.file=true
  BOOT_JAR_CMD = /NO_BOOTDIR/bin/jar
  BOOT_JARSIGNER_CMD = /NO_BOOTDIR/bin/jarsigner
  JAVAC_CMD = /NO_BOOTDIR/bin/java -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -Xmx512m -Xms512m -XX:PermSize=32m -XX:MaxPermSize=160m -Xbootclasspath/p:/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist/bootstrap/lib/javac.jar -jar /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist/bootstrap/lib/javac.jar  -source 7 -target 7 -encoding ascii -Xbootclasspath:/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/classes 
  JAVAH_CMD = /NO_BOOTDIR/bin/java -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -Xmx512m -Xms512m -XX:PermSize=32m -XX:MaxPermSize=160m -Xbootclasspath/p:/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist/bootstrap/lib/javah.jar:/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist/bootstrap/lib/javac.jar -jar /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist/bootstrap/lib/javah.jar -bootclasspath /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/classes
  JAVADOC_CMD = /NO_BOOTDIR/bin/java -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -Xmx512m -Xms512m -XX:PermSize=32m -XX:MaxPermSize=160m -Xbootclasspath/p:/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist/bootstrap/lib/javadoc.jar:/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist/bootstrap/lib/javac.jar:/mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist/bootstrap/lib/doclets.jar -jar /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist/bootstrap/lib/javadoc.jar -bootclasspath /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/classes
 
Build Platform Settings:
  USER = root
  PLATFORM = linux
  ARCH = amd64
  LIBARCH = amd64
  ARCH_FAMILY = amd64
  ARCH_DATA_MODEL = 64
  ARCHPROP = amd64
  ALSA_VERSION = 1.0.22
  OS_VERSION = 2.6.32-431.5.1.el6.x86_64 [requires at least 2.6]
  OS_VARIANT_NAME = RedHat
  OS_VARIANT_VERSION = 
  MB_OF_MEMORY = 7842
 
GNU Make Settings:
  MAKE = make
  MAKE_VER = 3.81 [requires at least 3.81]
  MAKECMDGOALS = sanity
  MAKEFLAGS = w
  SHELL = /bin/sh
 
Target Build Versions:
  JDK_VERSION = 1.7.0
  MILESTONE = internal
  RELEASE = 1.7.0-internal
  FULL_VERSION = 1.7.0-internal-root_2014_12_18_16_31-b00
  BUILD_NUMBER = b00
 
External File/Binary Locations:
  USRJDKINSTANCES_PATH = /opt/java
  BUILD_JDK_IMPORT_PATH = /NOT-SET/re/jdk/1.7.0/promoted/latest/binaries
    ALT_BUILD_JDK_IMPORT_PATH = 
  JDK_IMPORT_PATH = /NOT-SET/re/jdk/1.7.0/promoted/latest/binaries/linux-amd64
    ALT_JDK_IMPORT_PATH = 
  LANGTOOLS_DIST = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist
    ALT_LANGTOOLS_DIST = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/langtools/dist
  CORBA_DIST = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/corba/dist
    ALT_CORBA_DIST = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/corba/dist
  JAXP_DIST = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/jaxp/dist
    ALT_JAXP_DIST = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/jaxp/dist
  JAXWS_DIST = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/jaxws/dist
    ALT_JAXWS_DIST = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/jaxws/dist
  HOTSPOT_DOCS_IMPORT_PATH = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/hotspot/import/docs
    ALT_HOTSPOT_DOCS_IMPORT_PATH = 
  HOTSPOT_IMPORT_PATH = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/hotspot/import
    ALT_HOTSPOT_IMPORT_PATH = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/hotspot/import
  HOTSPOT_SERVER_PATH = /mnt/disk/file/cislc/personal/sunbingyong/jdk/openjdk/build/linux-amd64/hotspot/import/jre/lib/amd64/server
    ALT_HOTSPOT_SERVER_PATH = 
  CACERTS_FILE = ./../src/share/lib/security/cacerts
    ALT_CACERTS_FILE = 
  CUPS_HEADERS_PATH = /usr/include
    ALT_CUPS_HEADERS_PATH = 
 
OpenJDK-specific settings:
  FREETYPE_HEADERS_PATH = /usr/include
    ALT_FREETYPE_HEADERS_PATH = 
  FREETYPE_LIB_PATH = /usr/lib
    ALT_FREETYPE_LIB_PATH = 
 
Previous JDK Settings:
  PREVIOUS_RELEASE_PATH = 
    ALT_PREVIOUS_RELEASE_PATH = 
  PREVIOUS_JDK_VERSION = 1.6.0
    ALT_PREVIOUS_JDK_VERSION = 
  PREVIOUS_JDK_FILE = 
    ALT_PREVIOUS_JDK_FILE = 
  PREVIOUS_JRE_FILE = 
    ALT_PREVIOUS_JRE_FILE = 
  PREVIOUS_RELEASE_IMAGE = 
    ALT_PREVIOUS_RELEASE_IMAGE = 
 
Sanity check passed.


5. 如果上一步没有错误,就可以执行make。等待一段时间之后就OK了!

6. 编译之后在build/可以看到:

root@labserver build # ls
linux-amd64  linux-amd64-debug
root@labserver build # cd linux-amd64
root@labserver linux-amd64 # ls
bin        bundles  democlasses   hotspot      j2re-image   langtools                sanityCheckWarnings.txt  tmp
btbins     classes  docs          hotspot.log  j2sdk-image  lib                      source-bundles
btclasses  corba    gennativesrc  impsrc       jaxp         sample                   source_tips
btjars     demo     gensrc        include      jaxws        sanityCheckMessages.txt  symbols
root@labserver linux-amd64 # cd bin
root@labserver bin # ./java -version
openjdk version "1.7.0-internal-debug"
OpenJDK Runtime Environment (build 1.7.0-internal-debug-bing_2014_12_17_14_44-b00)
OpenJDK 64-Bit Server VM (build 21.0-b17-jvmg, mixed mode)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值