博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mac_OS_Sierra_10.12.6编译OpenJDK9
阅读量:7009 次
发布时间:2019-06-28

本文共 1699 字,大约阅读时间需要 5 分钟。

编译环境以及依赖

macOS:Sierra,10.12.6

处理器:2.6 GHz Intel Core i7

内存:16 GB 2133 MHz LPDDR3

Command Line Tools (macOS Sierra version 10.12) for XCode: Version 9.2

Boot JDK: jdk1.8.0_131

安装Homebrew

homebrew是macOS 缺失的软件包管理器。安装指南参考。

安装Mercurial

$ brew install mercurial 安装mercurial,它是OpenJDK的版本管理工具,只是为了下载OpenJDK的源代码。如果实在不想安装这个奇怪的工具,可自行在github上找个人的OpenJDK fork repo,然后就可以使用Git工具了。

安装freetype

$ brew install freetype 我在编译的过程中没有进行这一步,如果遇到缺少freetype的错误可使用homebrew安装。

编译OpenJDK9

  1. 获取源代码

    $ hg clone http://hg.openjdk.java.net/jdk9/jdk9 OpenJDK9

    $ cd OpenJDK9
    $ bash ./get_source.sh

  2. 编译配置

    bash configure --disable-warnings-as-errors --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/

    --disable-warnings-as-errors:禁用将警告当做错误,避免因为警告而中断编译

    --with-boot-jdk: 指定Boot JDK的位置

  3. 编译OpenJDK

    make all

    但是遇到了两个问题,Google搜索后修改之后完成编译

    1. error: ordered comparison between pointer and zero ('char *' and 'int')   if (base() > 0) {       ~~~~~~ ^ ~ 1 error generated.
    2. error: ordered comparison between pointer and zero ('address' (aka 'unsigned char *') and 'int')   if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops.

      两个是同等类型的错误,需要找到该文件,将表达式进行修改。

      if (base() > 0) { ==> if (base() != NULL) {
      if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops. ==> if (Universe::narrow_oop_base() != NULL) { // Implies UseCompressedOops.

      修改完成之后重新编译即可,该问题在使用Command Line Tools (macOS Sierra version 10.12) for XCode: Version 9.2的时候出现。参考资料:

  4. 打印编译后Java的版本

    build/macosx-x86_64-normal-server-release/jdk/bin/java -version

    shell openjdk version "9-internal" OpenJDK Runtime Environment (build 9-internal+0-adhoc.xiaoweiliu.jdk9) OpenJDK 64-Bit Server VM (build 9-internal+0-adhoc.xiaoweiliu.jdk9, mixed mode)

转载地址:http://wettl.baihongyu.com/

你可能感兴趣的文章
[译]PEP 342--增强型生成器:协程
查看>>
技术团队管理笔记(一)-识人
查看>>
[iOS]仿 Airbnb 的 tableView 头部视图层叠效果
查看>>
09、React系列之 使用yarn包管理工具
查看>>
小议Linux安全防护(二)
查看>>
动态权限相关的几个库分析
查看>>
在 Postgres 上使用 HyperLogLog 进行去重计数
查看>>
【JS第27期】继承-原型链
查看>>
SpringBoot使用缓存
查看>>
如何实现一个无限循环的轮播图
查看>>
iOS蓝牙开发
查看>>
使用maven构建java9 service实例
查看>>
十三、Android studio环境的搭建
查看>>
ES6 系列之模板字符串
查看>>
JVM(四)垃圾回收的实现算法和执行细节
查看>>
对象解构与点操作访问究竟谁快
查看>>
Python3入门机器学习(七)- PCA
查看>>
2017阿里,百度,京东java面试+笔试大合集,这些面试题你都会吗?
查看>>
JavaScript数据结构03 - 队列
查看>>
笔记-OC运行时问题扩展
查看>>