android openjdk10,mac下编译OpenJDK10

OpenJDK是与Oracle JDK最接近的开源jdk,周志明老师在《深入理解JAVA虚拟机》第一章就建议大家自己编译下OpenJDK的源码,最近遇到JVM相关的一些问题,又心血来潮的想试试。

如果是第一次编译的话真的是很难一次成功的,由于操作系统、软件环境、OpenJDK版本不同各种千奇百怪的问题都有。虽然项目中用的是java8,但因为自己使用macOS 10.13.6操作系统,看了下网上的一些文章对jdk8编译支持不是很好,因此选择了不少人编译成功的jdk9进行下手。

但是jdk9到我这里也行不通,遇到的问题在openjdk官网和stackoverflow上都有人反映,但没人回答, 因此不得不放弃。接下来试jdk9u遇到相同错误,换到jdk10却异常顺利,无需像jdk9一样改源码啥的,一次成功。因此如果你打算在mac上尝试编译的话,建议直接编译jdk10吧。

1. 工具准备

homebrew,mac下的包管理工具

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

mercurial, openjdk源码版本管理工具

sudo easy_install mercurial

ccache, freetype, 编译以及加速编译时所要用到的

brew install ccache

brew install freetype

2. 下载源码

hg clone

hg clone http://hg.openjdk.java.net/jdk10/jdk10/

修改get_source.sh最后几行如下以防止中断

# Get clones of all absent nested repositories (harmless if already exist)

sh ./common/bin/hgforest.sh clone "$@"

while [ $? -ne 0 ]

do

sh ./common/bin/hgforest.sh clone "$@"

done

# Update all existing repositories to the latest sources

sh ./common/bin/hgforest.sh pull -u

while [ $? -ne 0 ]

do

sh ./common/bin/hgforest.sh pull -u

done

执行以下命令以获取全部资源:

sh ./get_source.sh

3. 执行configure

`sh ./configure --with-target-bits=64 --with-freetype=/usr/local/Cellar/freetype/2.9.1 --enable-ccache --with-jvm-variants=server,client --with-boot-jdk-jvmargs="-Xlint:deprecation -Xlint:unchecked" --disable-zip-debug-info --disable-warnings-as-errors --with-debug-level=slowdebug 2>&1 | tee configure_mac_x64.log`

注意:freetype版本要和自己使用的对应

4. 执行make

export LANG=C

make all LOG=debug 2>&1 | tee make_mac_x64.log

5. 验证

执行./java -version打印如下表示编译成功。

openjdk version "10-internal"

OpenJDK Runtime Environment (slowdebug build 10-internal+0-adhoc.baohuahe.jdk10)

OpenJDK 64-Bit Server VM (slowdebug build 10-internal+0-adhoc.baohuahe.jdk10, mixed mode)

接下来就可以愉快的看jvm源码和进行本地调试了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值