jvm学习1

JVM 学习1 —> 编译openjdk源码

环境

mac 13.4.1
xcode 14.3.1–appstore

BootJDK openjdk17

CLang 14.0.3

CLang++ 14.0.3

make 3.8.1

freetype-config 26.0.20

ccahe 4.8.2

autoconf 2.7.1

openjdk17源码

固化配置

1
./configure --with-target-bits=64 --with-freetype=bundled --enable-ccache --with-jvm-variants=server --disable-warnings-as-errors --with-debug-level=slowdebug --with-extra-cflags="-mstack-alignment=16 -DMAC_OS_X_VERSION_MIN_REQUIRED=110000

固化配置遇到的问题

1. 软连接问题

报错: /opt/homebrew/opt/ccache/libexec/clang is a symbolic link to ccache. This is not supported.

解决:

1
mv /opt/homebrew/opt/ccache/libexec/clang /opt/homebrew/opt/ccache/libexec/clang_backup
  1. BootJDK jar包缺失

    报错:找不到 tools.jar 和 dt.jar

    解决:

    openjdk9以及以上版本删除了jdk中的tools.jar和dt.jar

这两个jar包主要是编译jdk依赖时使用,在openjdk9以及以上版本中被移除,可以从jdk8中找到两个jar包

  1. clang 编译报错

    报错:’-mstack-alignment=16-DMAC_OS_X_VERSION_MIN_REQUIRED=110000’

    解决:在编译时加入–with-extra-cflags 参数

    1
    ./configure -with-extra-cflags="-mstack-alignment=16 -DMAC_OS_X_VERSION_MIN_REQUIRED=110000"

编译

1
make clean && make all

结果

命令:

1
./build/macosx-aarch64-server-slowdebug/jdk/bin/java -version

查询结果:

1
2
3
4
5
openjdk version "17-internal" 2021-09-14 

OpenJDK Runtime Environment (slowdebug build 17-internal+0-adhoc.promisechan.openjdk17)

OpenJDK 64-Bit Server VM (slowdebug build 17-internal+0-adhoc.promisechan.openjdk17, mixed mode)

参考

Mac端编译属于自己的JDK、OpenJDK、OpenJDK11

openJdk