zoukankan      html  css  js  c++  java
  • CentOS 7 编译 openjdk 8

    环境

    • 平台:CentOS 7
    • 内存:1G
    • 磁盘:15G
    • bootstrap jdk:openjdk-8

    开始我的内存是 512M,编译的时候会发生 OOM(内存溢出),1G 内存可以通过。

    依赖

    以下依赖,都是在平台最小安装下需要安装的工具。

    也可以使用 bash ./configure 一步一步来安装自己平台缺失的依赖项。

    • make、gcc、g++
    • unzip、zip
    • libXtst-devel、libXt-devel、libXrender-devel
    • cups-devel
    • freetype-devel
    • alsa-lib-devel
    • fontconfig-devel

    配置

    当以上执行 bash ./configure 没有缺失的依赖之后,执行以下命令,配置安装路径。
    最好指定 --prefix 参数,否则编译文件会按照默认路径安转,不利于查看。

    bash ./configure --prefix=/opt/java/openjdk-8-build
    

    编译

    make all
    

    打印以下信息,编译完成。

    如果构建期间报错,一般可以通过输出错误信息可以找到具体的原因。如果还是找不到原因,可以在评论留言,我会不定期查回复。

    ----- Build times -------
    Start 2021-09-29 17:16:54
    End   2021-09-29 17:46:37
    00:00:35 corba
    00:00:41 demos
    00:03:56 docs
    00:15:46 hotspot
    00:00:56 images
    00:00:23 jaxp
    00:00:29 jaxws
    00:06:04 jdk
    00:00:37 langtools
    00:00:15 nashorn
    00:29:43 TOTAL
    -------------------------
    Finished building OpenJDK for target 'all'
    

    安转

    编译完成后,执行一下命令,安装 jdk 到--prefix 指定的目录。

    make install
    

    单独编译 HotSpot

    进入hotspot/make/<platform>目录里执行make就行。
    我具体执行的命令是在hotspot/make/linux里:

    make ALT_BOOTDIR=$JAVA_HOME LANG=C HOTSPOT_BUILD_JOBS=4 ARCH_DATA_MODEL=64 fastdebug  
    

    编译完成会在 hotspot/make/linux/linux_amd64_compiler2 目录下生成 libjvm.so 文件,该文件就是 JVM。

    将编译的libjvm.so 替换 $JAVA_HOME/jre/lib/amd64/server 目录下的 libjvm.so,即可使用自己编译的 JVM。

    FAQ

    缺失 stdc++

    如果出现下面错误,是由于缺少依赖 libstdc++-static

    Linking vm...
    **NOTICE** Dtrace support disabled: /usr/include/sys/sdt.h not found
    /usr/bin/ld: cannot find -lstdc++
    collect2: error: ld returned 1 exit status
    make[2]: Leaving directory `/root/java/jdk_build/jdk8u/hotspot/make/linux/linux_amd64_compiler2/fastdebug'
    All done.
    make[1]: Leaving directory `/root/java/jdk_build/jdk8u/hotspot/make/linux/linux_amd64_compiler2/fastdebug'
    

    参考

    作者:PP杰

    出处:http://www.cnblogs.com/newber/

    博学之,审问之,慎思之,明辨之,笃行之。

  • 相关阅读:
    postman的几个问题
    服了这个所谓北大青鸟官方学员社区论坛
    Gatling实战(三)
    Gatling实战(二)
    Gatling实战(一)
    httplib和urllib2常用方法
    jmeter的新增函数说明
    windows版jmeter的body data如何用 作为“换行”
    linux下oracle服务启动关闭
    linux下ORACLE监听日志的正确删除步骤
  • 原文地址:https://www.cnblogs.com/newber/p/15353756.html
Copyright © 2011-2022 走看看