之前看jvm的时候就尝试编译一下jdk,但是时间有限,没成功之后也没再管(考试周。。。==||),今天终于有时间把这个坑补上了。看网上都是ubuntu上编译的jdk,为了不雷同,就换个环境吧。没想到换了个环境之后各种坑都有遇上了,实际上并不一帆风顺,吃完饭后总结一下吧。
1.配置编译环境
yum groupinstall "Development Tools"
这个并不是全部的环境!!请听我把曲折过程 娓娓道来。。。。
2.openjdk源码下载:https://github.com/dmlloyd/openjdk/tree/jdk7u/jdk7u
从官网下载后解压下载的源文件
unzip openjdk-jdk7u-jdk7u.zip
将文件移动到usr中,以便环境变量的配置
mv openjdk-jdk7u-jdk7u /usr/jvm/openjdk
3.配置编译环境
这里的注意了,要是环境变量没配好,就算make sanity 成功也不能编译成功。。
export LANG=C 语言选项
export ALT_BOOTDIR=/usr/lib/jvm/java-1.7.0 这个是bootstrap jdk的路径,不是openjdk的路径,不是openjdk的路径,不是openjdk的路径,
重要的事情强调三遍!!这个jdk需要完整的,编译的过程其实就是用一个jdk(还有gcc了=-=)将openjdk的源码(就是.java)编译成.class等。
export BUILD_LANGTOOLS=true #export BUILD_JAXWS=false #export BUILD_JAXP=false #export BUILD_CORBA=false export BUILD_HOTSPOT=true export BUILD_JDK=true 这几条都是选择要编译的内容 export SKIP_COMPARE_IMAGES=true BUILD_DEPLOY=false 避开javaws和浏览器java插件之类的部分的build BUILD_INSTALL=false 不会build出安装包,但是还是会得到完整的jdk映像 export ALT_OUTPUTSIR=/usr/dev/jvm/opnejdk/build 编译结果存放的路径 export ALLOW_DOWNLOADS=true 允许自动下载依赖 unset JAVA_HOME 取消环境变量,防止警告 unset CLASSPATH
一定要注意那个ALT_BOOTDIR路径啊,不然编译的时候会找不到java编译器。
4.然后进行预编译make sanity ,本以为会成功但是结果没我想的那么简单!!
但是要知难而上,一个一个看呗。
第一个错误,是因为编辑完的配置文件没有执行=O=,输入
source /etc/profile
每次编辑完都记得输入,然后第一个错误解决
第二个错误,ant的安装,上官网下载:https://ant.apache.org/bindownload.cgi
建议下载apache-ant-1.9.10-bin.tar.gz因为1.10需要java1.8以上的,而1.9的版本只需要java1.5以上的,下完后解压到相应目录中
之后配置ant的环境变量,用之前的命令打开profile,再加入
export LANG=C export ANT_HOME=/usr/apache-ant-1.9.10 配置ant家路径 export PATH=$PATH:$ANT_HOME/bin 配置path export ALT_BOOTDIR=/usr/lib/jvm/java-1.7.0 export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-1.7.0
检验ant是否安装成功:
[root@localhost linux-amd64]# ant -version Apache Ant(TM) version 1.9.10 compiled on February 3 2018
第三个错误,没有alsa声卡驱动,因为java支持声音的输入输出,所以这个要上官网下载:
http://www.alsa-project.org/main/index.php/Download
下载的东西:
alsa-driver-1.0.25.tar.bz2;
alsa-lib-1.0.27.2.tar.bz2;
alsa-utils-1.0.27.2.tar.bz2;
将其分别解压tar -jxvf xxxxx.tar.bz2
2.分别进入解压出来的文件夹;依次执行
./configure make make install
应先安装lib,再安装driver和util,安装util时会报错,configure: error: this packages requires a curses library
这时应安装
这样声卡就按好了。
第四个问题,Free Type版本不对,利用指令
yum list|grep freetype可查看需要安装的软件。安装红框中的软件
而安装第一个时遇到错误:
You do not have access to valid Cups headerfiles.
Please check your access to
/usr/include/cups/cups.h
and/or check your value of ALT_CUPS_HEADERS_PATH,
CUPS is frequently pre-installed on many systems,
or may be downloaded from http://www.cups.org
通过yum查找命令,查到:
安装后在进行freetype的安装,成功。
再次进行预编译:
输入make指令进行编译,这个时候如果环境变量按照上文所示的无误,那就要等二十分钟左右了。。。。
-----------------------------------------------------------------------------------------------------------
编译成功后进行检查
可以看到自己的jdk编译成功啦!!!
总结起来,这个jdk编译主要注意的是环境变量的配置,在一个是编译环境的搭建,要弄明白他是怎么进行编译的,问题就会迎刃而解了,编译有问题不要慌,一个一个软件安装上去就解决了