CentOS 6.5 i386 平台编译 OpenJDK8 32bit
1.确认Linux中安装了以下包
gcc
cloog-ppl cloog-ppl-devel
ppl ppl-devel
gmp-devel
cpp
mpfr
mpfr-devel
gmp-devel
glibc-devel
glibc-headers
kernel-headers
gcc-c++
libstdc++-devel
gdb
zip
unzip
alsa-lib
alsa-lib-devel
libXt
libXt-devel
libSM-devel
libICE-devel
xorg-x11-proto-devel
libX11-devel
libXau-devel
libXdmcp-devel
libxcb-devel
xorg-x11-proto-devel
libXtst
libXtst-devel
libXi-devel
libXext-devel
libXrender
libXrender-devel
cups
cups-devel
gnutls-devel
libgcrypt-devel
libgpg-error-devel
krb5-devel
keyutils-libs-devel
libcom_err-devel
libselinux-devel
libsepol-devel
zlib-devel
freetype
freetype-devel
libXp
libXp-devel
libXpm
libXpm-devel
libXi
libXi-devel
libffi-devel
mesa-private-llvm-devel
2.安装llvm
安装参考地址: http://clang.llvm.org/get_started.html
详细步骤如下:
1)、在
http://llvm.org/releases/
上选择一个版本的llvm,下载其源代码,本文选择的版本是3.4.1,下载有如下文件:
llvm-3.4.1.src.tar.gz
cfe-3.4.1.src.tar.gz
clang-tools-extra-3.4.src.tar.gz
compiler-rt-3.4.src.tar.gz
libcxx-3.4.src.tar.gz(由于在步骤1中安装gcc-c++时,安装了依赖包libstdc++-devel,因此clang默认用的C++库就是gcc的libstdc++,如果需要用自己的libc++,可以下载此文件进行编译安装即可)
2)、解压上面的文件,然后按照如下步骤进行组织,以保证clang,clang-tools-extra和compiler-rt可以和llvm一起编译
mv cfe-3.4.1.src clang
mv clang/ llvm-3.4.1.src/tools/
mv clang-tools-extra-3.4 extra
mv extra/ llvm-3.4.1.src/tools/clang/
mv compiler-rt-3.4 compiler-rt
mv compiler-rt llvm-3.4.1.src/projects/
3)、在llvm-3.4.1.src同一层目录上新建目录build-3.4.1并进入:
mkdir build-3.4.1
cd build-3.4.1
4)、在新建build-3.4.1目录中执行如下命令,对llvm进行编译,这样编译的结果就存放到了build-3.4.1目录中:
chmod u+x ../llvm-3.4.1.src/configure
../llvm-3.4.1.src/configure --enable-optimized --enable-targets=host
编译的时候,一定要加上"--enable-optimized --enable-targets=host"优化选项,否则编译出的文件会很大,同时还要耗费很长的时间
更多configure选项可以通过../llvm-3.4.1.src/configure -help命令查看
5)、执行make\make install安装llvm:
make -j 4
make install
6)、可以通过如下命令查看安装是否成功已经安装后的llvm版本信息:
clang++ -v
3.安装Ant
解压apache-ant-1.9.4-bin.zip,重命名为Ant,并移动到/myspace/buildjdk/目录中:
unzip apache-ant-1.9.4-bin.zip
mv apache-ant-1.9.4 Ant
mv Ant/ /myspace/buildjdk/
本文默认在/myspace/buildjdk/目录中编译openjdk-8-src-b132-03_mar_2014.zip,因此后续的所有相关文件,都放到此目录中
4.安装JDK7
按照openjdk-8-src-b132-03_mar_2014.zip所提供的README-builds中的描述,编译openjdk8需要一个jdk7u7之后的版本,但不能够是jdk8,本文选用jdk-7u51-linux-i586.tar.gz
解压jdk-7u51-linux-i586.tar.gz,重命名为JDK7u51,并放到/myspace/buildjdk/目录中:
tar -zxf jdk-7u51-linux-i586.tar.gz
mv jdk1.7.0_51/ JDK7u51
mv JDK7u51/ /myspace/buildjdk/
5.解压openjdk
解压openjdk-8-src-b132-03_mar_2014.zip,重命名为openjdk8b123,将其移动到/myspace/buildjdk/目录中:
unzip openjdk-8-src-b132-03_mar_2014.zip
mv openjdk openjdk8b123
mv openjdk8b123/ /myspace/buildjdk/
6.编译openjdk8
执行如下命令,在openjdk8b123目录中编译openjdk8:
cd /myspace/buildjdk/openjdk8b123
export PATH=${PATH}:/myspace/buildjdk/Ant/bin
chmod u+x configure
./configure --with-boot-jdk=../JDK7u51/ --disable-zip-debug-info --with-debug-level=slowdebug --with-jvm-variants=server,client --with-boot-jdk-jvmargs="-Xlint:deprecation -Xlint:unchecked" --with-num-cores=4 --with-target-bits=32 2>&1 | tee configure_all_x86.log
export LANG=C
make all JOBS=4 LOG=debug 2>&1 | tee make_all_x86.log
通过./configure -help 可以查看configure的更多选项
编译完成后,通过openjdk8b123目录下的configure_all_x86.log、make_all_x86.log查看详细的日志信息
7.编译带调试版本的openjdk
在编译的时候,可以将hotspot/make/linux/makefiles/gcc.make中的OPT_CFLAGS的-O3选项改成-g,或者更为激进一点儿,将makefiles目录下的所有文件的编译优化选项,均改为-g即可
8.文件下载地址
openjdk:
http://download.java.net/openjdk/
9.参考链接
llvm安装:
openjdk8编译:
openjdk8调试:
Linux RPM查找站:
10.命令汇总
unzip apache-ant-1.9.4-bin.zip
mv apache-ant-1.9.4 Ant
mv Ant/ /myspace/buildjdk/
tar -zxf jdk-7u51-linux-i586.tar.gz
mv jdk1.7.0_51/ JDK7u51
mv JDK7u51/ /myspace/buildjdk/
unzip openjdk-8-src-b132-03_mar_2014.zip
mv openjdk openjdk8b123
mv openjdk8b123/ /myspace/buildjdk/
cd /myspace/buildjdk/openjdk8b123
export PATH=${PATH}:/myspace/buildjdk/Ant/bin
chmod u+x configure
./configure --with-boot-jdk=../JDK7u51/ --disable-zip-debug-info --with-debug-level=slowdebug --with-jvm-variants=server,client --with-boot-jdk-jvmargs="-Xlint:deprecation -Xlint:unchecked" --with-num-cores=4 --with-target-bits=32 2>&1 | tee configure_all_x86.log
export LANG=C
make all JOBS=4 LOG=debug 2>&1 | tee make_all_x86.log
mv apache-ant-1.9.4 Ant
mv Ant/ /myspace/buildjdk/
tar -zxf jdk-7u51-linux-i586.tar.gz
mv jdk1.7.0_51/ JDK7u51
mv JDK7u51/ /myspace/buildjdk/
unzip openjdk-8-src-b132-03_mar_2014.zip
mv openjdk openjdk8b123
mv openjdk8b123/ /myspace/buildjdk/
cd /myspace/buildjdk/openjdk8b123
export PATH=${PATH}:/myspace/buildjdk/Ant/bin
chmod u+x configure
./configure --with-boot-jdk=../JDK7u51/ --disable-zip-debug-info --with-debug-level=slowdebug --with-jvm-variants=server,client --with-boot-jdk-jvmargs="-Xlint:deprecation -Xlint:unchecked" --with-num-cores=4 --with-target-bits=32 2>&1 | tee configure_all_x86.log
export LANG=C
make all JOBS=4 LOG=debug 2>&1 | tee make_all_x86.log
CentOS 6.0 i386 平台编译 OpenJDK7u40 32bit
1.确认Linux中安装了以下包
makegcc
cloog-ppl cloog-ppl-devel
ppl ppl-devel
gmp-devel
cpp
mpfr
mpfr-devel
gmp-devel
glibc-devel
glibc-headers
kernel-headers
gcc-c++
libstdc++-devel
gdb
ant
zip
unzip
alsa-lib
alsa-lib-devel
libXt
libXt-devel
libSM-devel
libICE-devel
xorg-x11-proto-devel
libX11-devel
libXau-devel
libXdmcp-devel
libxcb-devel
xorg-x11-proto-devel
libXtst
libXtst-devel
libXi-devel
libXext-devel
libXrender
libXrender-devel
cups
cups-devel
gnutls-devel
libgcrypt-devel
libgpg-error-devel
krb5-devel
keyutils-libs-devel
libcom_err-devel
libselinux-devel
libsepol-devel
zlib-devel
freetype
freetype-devel
libXp
libXp-devel
libXpm
libXpm-devel
libXi
libXi-devel
libffi-devel
mesa-private-llvm-devel
--以下是本机的安装包
rpm -qa make gcc gcc-c++ gdb zip unzip alsa-lib alsa-lib-devel libXt libXt-devel libXtst libXtst-devel libXrender libXrender-devel cups cups-devel freetype freetype-devel libXp libXp-devel libXpm libXpm-devel libXi libXi-devel libffi-devel
gcc-c++-4.4.4-13.el6.i686
libXp-1.0.0-15.1.el6.i686
libXtst-devel-1.0.99.2-3.el6.i686
libXt-devel-1.0.7-1.el6.i686
gdb-7.1-29.el6.i686
make-3.81-19.el6.i686
cups-1.4.2-35.el6.i686
libXrender-0.9.5-1.el6.i686
libXtst-1.0.99.2-3.el6.i686
libXpm-3.5.8-2.el6.i686
gcc-4.4.4-13.el6.i686
libXi-devel-1.3-3.el6.i686
cups-devel-1.4.2-35.el6.i686
libXpm-devel-3.5.8-2.el6.i686
freetype-2.3.11-5.el6.i686
alsa-lib-1.0.21-3.el6.i686
libXi-1.3-3.el6.i686
alsa-lib-devel-1.0.21-3.el6.i686
libXp-devel-1.0.0-15.1.el6.i686
unzip-6.0-1.el6.i686
libXrender-devel-0.9.5-1.el6.i686
zip-3.0-1.el6.i686
freetype-devel-2.3.11-5.el6.i686
libXt-1.0.7-1.el6.i686
2.安装Ant
解压apache-ant-1.9.4-bin.zip,本文将其解压到/myspace/buildjdk/中,并将解压后的文件夹重命名为Ant
本文默认在/myspace/buildjdk/目录中编译openjdk-7u40-fcs-src-b43-26_aug_2013.zip,因此后续的所有相关文件,都放到此目录中
3.安装JDK6:jdk-6u45-linux-i586.bin
本文将其安装到/myspace/buildjdk/JDK6u45目录中
最好选择JDK6,JDK7会出现一个动态链接库的链接BUG: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7116189
4.准备编译文件
解压openjdk-7u40-fcs-src-b43-26_aug_2013.zip,本文将其解压到/myspace/buildjdk/中,并将解压后的openjdk文件夹重命名为Openjdk7u40
5.配置Drops文件:JAXP和JAX_WS
jaxp-1_4_5-unittests.zipjaxp145_01.zip
jdk7-jaxws2_2_4-b03-2011_05_27.zip
jdk7-jaf-2010_08_19.zip
创建/myspace/buildjdk/openjdk7u40/java/devtools/share/jdk7-drops目录,将上面四个文件拷贝到该目录中
6.配置编译时环境变量并编译OpenJDK7
export PATH=${PATH}:/myspace/buildjdk/Ant/binexport ZIP_DEBUGINFO_FILES=0
export LANG=C
export DEBUG_NAME=debug
export ALLOW_DOWNLOADS=true
export ARCH_DATA_MODEL=32
export ALT_DEVTOOLS_PATH=/usr/bin
export ALT_BOOTDIR=/myspace/buildjdk/JDK6u45
export ALT_JDK_IMPORT_PATH=/myspace/buildjdk/JDK6u45
export ALT_DROPS_DIR=/myspace/buildjdk/OpenJDK7u40/java/devtools/share/jdk7-drops
make sanity 2>&1 | tee make_sanity_x86.log
make 2>&1 | tee make_x86.log
--重编译的话,先清除
make clean 2>&1 | tee make_clean_x86.log
7.文件下载地址
centos: http://mirrors.163.com/centos/ant: http://ant.apache.org/
openjdk-7u40-fcs-src-b43-26_aug_2013.zip: http://download.java.net/openjdk/jdk7u40/promoted/b43/
jaxp-1_4_5-unittests.zip : http://download.java.net/jaxp/1.4.5
jaxp145_01.zip: http://download.java.net/jaxp/1.4.5
jdk7-jaxws2_2_4-b03-2011_05_27.zip: http://download.java.net/glassfish/components/jax-ws/openjdk/jdk7
jdk7-jaf-2010_08_19.zip: https://java.net/downloads/jax-ws/JDK7/
8.参考链接
openjdk7编译:http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html
openjdk7调试:
http://jvm.taobao.org
Linux RPM查找站: