linux(Ubuntu)下编译openJDK

参考文章:
http://blog.csdn.net/u011521890/article/details/52197723
编译中出现的问题:
问题1:
[javac] /home/dream/jvm/openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java:2182: warning: [overrides] Class Resolve.InapplicableSymbolsError.Candidate overrides equals, but neither it nor any superclass overrides hashCode method
    [javac]         private class Candidate {
    [javac]                 ^
    [javac] error: warnings found and -Werror specified
    [javac] 1 error
    [javac] 1 warning
解决:由于编译的openjdk版本为1.7,但是bootstrap的jdk版本为1.8。只要将bootstrap的jdk版本改为1.7即可。
问题2:
cc1plus: error: the "stabs" debug format cannot be used with pre-compiled headers [-Werror=deprecate]

解决:因为高版本的gcc不再支持stabs,解决办法:在make命令中加上 DEBUG_BINARIES=true

问题3:

cc1plus all warnings being treated as errors

解决:打开 /hotspot/make/linux/makefiles/gcc.make

其中的Linux是对应的自己的操作系统

jdk1.7在127行,jdk1.8在207行(可能每个版本的不同,直接搜索WARNINGS_ARE_ERRORS 即可),注释掉:

WARNINGS_ARE_ERRORS = -Werror

问题4:

This OS is not supported: Linux ubuntu 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:09:55 UTC 2017 i686 i686 i686 GNU/Linux

解决:修改 make/linux/Makefile,找到 SUPPORTED_OS_VERSION变量定义的地方,在后面追加 4%,如下所示

SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4%

问题5:

time is more than 10 years from present: 1136059200000
java.lang.RuntimeException: time is more than 10 years from present: 1136059200000

解决:网上写的是将 /jdk/src/share/classes/java/util/CurrencyData.properties文件的535 行的TR=TRL;2010-12-31-22-00-00;TRY时间该到距离现在10年以内,但是更改以后发现还是会出这个错,于是将CurrencyData.properties文件中所有的时间都更改到距离现在10年以内,再次编译时,发现没有报这个错误。

==============================================================

经过大约20分钟的编译,出现以下信息表示编译成功


========================================================================

修改openjdk源代码,参考:http://www.07net01.com/2015/08/913552.html,输出我们自己的版本信息。

配置环境变量,使用刚才编译好的jdk。在命令行输入java -version后,显示如下信息:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
编译 OpenJDK 16 需要以下步骤: 1. 安装必要的依赖项 在编译 OpenJDK 16 前,需要安装一些必要的依赖项。在 Ubuntu 系统上,可以使用以下命令安装: ``` sudo apt-get update sudo apt-get install build-essential zip unzip libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfreetype6-dev libasound2-dev libfontconfig1-dev libxrandr-dev libXi-dev libgif-dev libjpeg-turbo8-dev libpng-dev libbz2-dev libgtk-3-dev autoconf libtool libxml2-dev libxslt1-dev python3-dev libffi-dev libssl-dev liblzma-dev ``` 2. 下载 OpenJDK 16 源代码 可以从官方网站下载 OpenJDK 16 源代码压缩包,也可以使用以下命令从 Github 上下载: ``` hg clone http://hg.openjdk.java.net/jdk-updates/jdk16u/ cd jdk16u ``` 3. 配置环境变量 在编译 OpenJDK 16 前,需要设置以下环境变量: ``` export LANG=C export ALT_BOOTDIR=/path/to/your/boot/jdk export PATH=$ALT_BOOTDIR/bin:$PATH ``` 其中,`ALT_BOOTDIR` 是指你已经安装的 JDK 的路径。 4. 配置编译选项 进入 OpenJDK 16 源代码根目录,使用以下命令配置编译选项: ``` bash configure --with-toolchain-type=clang \ --with-jvm-features=shenandoahgc,zgc \ --with-target-bits=64 \ --with-sysroot=/path/to/your/sysroot \ --disable-warnings-as-errors \ --with-debug-level=slowdebug ``` 其中,`--with-toolchain-type` 指定使用 clang 工具链,`--with-jvm-features` 指定使用 ShenandoahGC 和 ZGC 内存管理器,`--with-target-bits` 指定编译 64 位版本的 OpenJDK,`--with-sysroot` 指定 Android 平台的 sysroot 路径,`--disable-warnings-as-errors` 禁用将警告视为错误的选项,`--with-debug-level` 指定调试级别。 5. 编译 OpenJDK 16 使用以下命令编译 OpenJDK 16: ``` make images ``` 6. 安装 OpenJDK 16 编译完成后,可以使用以下命令将 OpenJDK 16 安装到指定目录: ``` make install DESTDIR=/path/to/install ``` 其中,`DESTDIR` 指定安装目录。 以上就是使用 aarch64-linux-android23-clang 工具链编译 OpenJDK 16 的详细步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值