自己动手在Cent OS6.9上编译OPENJDK

之前看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编译主要注意的是环境变量的配置,在一个是编译环境的搭建,要弄明白他是怎么进行编译的,问题就会迎刃而解了,编译有问题不要慌,一个一个软件安装上去就解决了

 

猜你喜欢

转载自blog.csdn.net/yinweicheng/article/details/80600894
今日推荐