1.编译openjdk1.8源码

来源:互联网 发布:网络视讯赌博真假 编辑:程序博客网 时间:2024/05/18 20:05
openjdk编译步骤,先编译openjdk1.7,未成功后转而重新编译openjdk1.8
1.安装依赖:
yum -y install alsa-lib alsa-lib-devel libXrender libXrender-devel libXi-devel libXt-devel libXtst-devel cups cups-devel
1.1.安装oracle 1.8最新版
1.2.安装Ant(jdk1.7版本的设置)
cd /opt/tool/
wget http://archive.apache.org/dist/ant/binaries/apache-ant-1.9.8-bin.zip
unzip apache-ant-1.9.8-bin.zip
cd apache-ant-1.9.8
ln -s /opt/tool/apache-ant-1.9.8/bin/ant /usr/bin/ant
1.3.安装FreeType
cd /opt/tool/
wget https://sourceforge.NET/projects/freetype/files/freetype2/2.7.1/freetype-2.7.1.tar.bz2
tar -zxf freetype-2.7.1.tar.gz
cd freetype-2.7.1
./configure
make
make install
ln -s /usr/local/include/freetype2/freetype /usr/local/include/freetype
2.编译openjdk8(第一次编译openjdk7,发现依赖的包没有下载源,改编译8)
2.1下载openjdk1.8源码包
cd /opt/javabuild/
wget http://www.java.net/download/openjdk/jdk8/promoted/b132/openjdk-8-src-b132-03_mar_2014.zip(如果下载不下来,改用迅雷下载)
unzip openjdk-8-src-b132-03_mar_2014.zip
cd openjdk
2.2配置环境变量(jdk1.7版本的设置,jdk1.8会有警告)
vim /etc/profile

#java
#export JAVA_HOME=/usr/java/jdk1.8.0_144
#export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#export PATH=$PATH:$JAVA_HOME/bin

#javabuild
#语言选项, 这个必须设置, 否则编译好后会出现一个HashTable的NPE错
export LANG=C
#Bootstrap JDK的安装路径。必须设置
export ALT_BOOTDIR=/usr/java/jdk1.8.0_144
export ALT_JDK_IMPORT_PATH=/usr/java/jdk1.8.0_144
#Ant
export ANT_HOME=/opt/tool/apache-ant-1.9.7
#freetype
export ALT_FREETYPE_HEADERS_PATH=/usr/local/include/freetype2
#要编译的版本
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
#要编译的内容
export BUILD_LANGTOOLS=true
#export BUILD_JAXP=false
#export BUILD_JAXWS=false
#export BUILD_CORBA=false
export BUILD_HOTSPOT=true
export BUILD_JDK=true
#允许自动下载依赖
export ALLOW_DOWNLOADS=true
#并行编译的线程数, 设置为和CPU内核数量一致即可
export HOTSPOT_BUILD_JOBS=6
export ALT_PARALLEL_COMPILE_JOBS=6
#比较本次build出来的映像与先前版本的差异。 这对我们来说没有意义,
#必须设置为false, 否则sanity检查会报缺少先前版本JDK的映像的错误提示。
#如果已经设置dev或者DEV_ONLY=true, 这个不显式设置也行
export SKIP_COMPARE_IMAGES=true
#使用预编译头文件, 不加这个编译会更慢一些
export USE_PRECOMPILED_HEADER=true
#把它设置为false可以避开javaws和浏览器Java插件之类的部分的buildBUILD_DEPLOY=false
#把它设置为false就不会build出安装包。 因为安装包里有些奇怪的依赖,
#但即便不build出它也已经能得到完整的JDK映像, 所以还是别build它好了
BUILD_INSTALL=false
#编译结果所存放的路径
export ALT_OUTPUTDIR=/opt/javabuild/build
#这两个环境变量必须去掉,不然会有很诡异的事情发生(我没有具体查过这些"诡异的
#事情", Makefile脚本检查到有这2个变量就会提示警告)
unset JAVA_HOME
unset CLASSPATH

soruce /etc/profile
2.3 Debug 64bit Build
bash ./configure --enable-debug --with-target-bits=64
2.4 编译
make all
2.5 openjdk编译结果
完整编译目录:/opt/openjdk/build/linux-x86_64-normal-server-fastdebug
编译jdk目录:/opt/openjdk/build/linux-x86_64-normal-server-fastdebug/jdk
修改环境变量java_home指向编译后的jdk目录(可能需要删除原oracle jdk1.8版本)
[root@localhost bin]# java -version
openjdk version "1.8.0-internal-fastdebug"
OpenJDK Runtime Environment (build 1.8.0-internal-fastdebug-root_2017_08_18_19_35-b00)
OpenJDK 64-Bit Server VM (build 25.0-b70-fastdebug, mixed mode)
2.6 HotSpot虚拟机编译结果
/opt/javabuild/openjdk/build/linux-x86_64-normal-server-fastdebug/hotspot/linux_amd64_compiler2

遇到的问题
1).napplicableSymbolsError.Candidate overrides equals, but neither it nor any superclass overrides hashCode method
更换jdk版本
2).java.lang.UnsupportedClassVersionError: org/apache/tools/ant/launch/Launcher : Unsupported major.minor version 52.0
Ant版本太新
3).编译openjdk7.0失败,jdk7-jaf-2010_08_19.zip找不到下载源,重新编译openjdk8
4).configure: error: Could not find freetype! You might be able to fix this by running 'sudo yum install freetype-devel'.
yum install freetype-devel
5).You do not have ccache installed. Try installing it.You might be able to fix this by running 'sudo yum install ccache'.
yum install ccache
6).You have old-style ALT_ environment variables set
使用网上1.7版本的环境变量配置,会有警告,但是能编译成功。
7).java.lang.VerifyError: class jdk.nashorn.internal.objects.ScriptFunctionImpl overrides final method setPrototype.
vim nashorn/make/BuildNashorn.gmk
第80行原:-cp "$(NASHORN_OUTPUTDIR)/nasgen_classes$(PATH_SEP)$(NASHORN_OUTPUTDIR)/nashorn_classes" \
修改为-Xbootclasspath/p:"$(NASHORN_OUTPUTDIR)/nasgen_classes$(PATH_SEP)$(NASHORN_OUTPUTDIR)/nashorn_classes" \

openjdk1.8编译方法(编译成功后查找资料后的总结,未测试)
1.安装依赖:
yum -y install alsa-lib alsa-lib-devel libXrender libXrender-devel libXi-devel libXt-devel libXtst-devel cups cups-devel
1.1.安装oracle 1.8最新版
1.2.安装FreeType
cd /opt/tool/
wget https://sourceforge.NET/projects/freetype/files/freetype2/2.7.1/freetype-2.7.1.tar.bz2
tar -zxf freetype-2.7.1.tar.gz
cd freetype-2.7.1
./configure
make
make install
ln -s /usr/local/include/freetype2/freetype /usr/local/include/freetype
2.编译openjdk1.8
2.1下载openjdk1.8源码包
cd /opt/javabuild/
wget http://www.java.net/download/openjdk/jdk8/promoted/b132/openjdk-8-src-b132-03_mar_2014.zip(如果下载不下来,改用迅雷下载)
unzip openjdk-8-src-b132-03_mar_2014.zip
cd openjdk
2.2 构建
--with-boot-jdk:指定引导JDK所在目录,配置环境变量可省略;
--with-target-bits:指定编译64位系统的JDK;
--with-debug-level=slowdebug:指定可以生成最多的调试信息;
--enable-debug-symbols ZIP_DEBUGINFO_FILES=0:生成调试的符号信息,并且不压缩;
bash ./configure --with-target-bits=64 --with-boot-jdk=/usr/java/jdk1.8 --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0
2.3 编译
make all
2.4 openjdk编译结果
完整编译目录:/opt/openjdk/build/linux-x86_64-normal-server-fastdebug
编译jdk目录:/opt/openjdk/build/linux-x86_64-normal-server-fastdebug/jdk
修改环境变量java_home指向编译后的jdk目录(可能需要删除原orcle jdk1.8版本)
[root@localhost bin]# java -version
openjdk version "1.8.0-internal-fastdebug"
OpenJDK Runtime Environment (build 1.8.0-internal-fastdebug-root_2017_08_18_19_35-b00)
OpenJDK 64-Bit Server VM (build 25.0-b70-fastdebug, mixed mode)
2.5 HotSpot虚拟机编译结果
/opt/javabuild/openjdk/build/linux-x86_64-normal-server-fastdebug/hotspot/linux_amd64_compiler2
原创粉丝点击