OpenJDK-编译 (mac)

一、准备

1、openjdk源码下载

openjdk源码可以到github上去下载,openjdk有一个tag列表 (https://github.com/openjdk/jdk/tags),可以从中找到合适的版本,例如 openjdk 11 : https://github.com/openjdk/jdk/releases/tag/jdk-11+28

2、boot-jdk

openjdk编译时需要使用到jdk,一般是需要编译版本的当前版本或者前一个版本,比如编译openjdk11,就需要openjdk11或者openjdk10 ( boot-jdk最好是使用openjdk,官方文档中介绍说使用其它的jdk可能会出现其它情况)。
openjdk的编译版本可以从adoptium上下载,网址: https://adoptium.net/temurin/releases

3、环境准备

需要安装相关工具

brew install FreeType
brew install Autoconf
brew install ccache

以及gcc和g++,并且要高一些的版本

brew install gcc

查看gcc 或g++版本

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc-11
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/11.2.0_3/bin/../libexec/gcc/x86_64-apple-darwin17/11/lto-wrapper
Target: x86_64-apple-darwin17
Configured with: ../configure --prefix=/usr/local/opt/gcc --libdir=/usr/local/opt/gcc/lib/gcc/11 --disable-nls --enable-checking=release --with-gcc-major-version-only --enable-languages=c,c++,objc,obj-c++,fortran,d --program-suffix=-11 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-zstd=/usr/local/opt/zstd --with-pkgversion='Homebrew GCC 11.2.0_3' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --enable-libphobos --build=x86_64-apple-darwin17 --with-system-zlib --disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.2.0 (Homebrew GCC 11.2.0_3)

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++-11
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/11.2.0_3/bin/../libexec/gcc/x86_64-apple-darwin17/11/lto-wrapper
Target: x86_64-apple-darwin17
Configured with: ../configure --prefix=/usr/local/opt/gcc --libdir=/usr/local/opt/gcc/lib/gcc/11 --disable-nls --enable-checking=release --with-gcc-major-version-only --enable-languages=c,c++,objc,obj-c++,fortran,d --program-suffix=-11 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-zstd=/usr/local/opt/zstd --with-pkgversion='Homebrew GCC 11.2.0_3' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --enable-libphobos --build=x86_64-apple-darwin17 --with-system-zlib --disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.2.0 (Homebrew GCC 11.2.0_3)

本文档中使用的是11.2.0版本

如果原因已经低版本的gcc工具,要使用新增,需要修改~/.zshrc文件和〜/.bash_profile文件

# 打开文件
open -e ~/.zshrc
# 或
open -e ~/.bash_profile

添加如下内容

alias gcc='gcc-11'
alias g++="g++-11"
alias cc="gcc-11"
alias c++="c++-11"

然后执行下面的命令使用变更生效

source ~/.zshrc
# 或
source ~/.bash_profile

二、编译

接下来开始编译openjdk,将下载下来的openjdk编译版本和源码解压缩,然后进入openjdk源码的目录,执行命令

$ cd jdk-jdk-11-28

# 移除Java环境变量配置,避免影响openjdk的编译工作
$ unset JAVA_HOME

# --with-boot-jdk jdk路由,需要替换成自己的
# --with-debug-level=slowdebug参数是为了显示更多调试信息.debug level有4种:release, fastdebug, slowdebug, optimized. 默认是 release
# --with-native-debug-symbols hotspot编译之后是一个名为libjvm.so的动态库,在java命令里通过dlopen加载,如果不加上--with-native-debug-symbols=internal,需要手动解压jdk/lib/amd64/server里的libjvm.debuginfo,或者指定动态库路径,调试起来会很复杂.
$ bash ./configure  --with-boot-jdk=/User/saleson/dev_tools/openjdk/jdk-11.0.14.1+1/Contents/Home --with-debug-level=slowdebug --with-native-debug-symbols=internal --with-target-bits=64

执行完成后出现如下内容表示执行成功

configure: creating /Users/saleson/Desktop/openjdk/jdk-jdk-11-28/build/macosx-x86_64-normal-server-slowdebug/configure-support/config.status
config.status: creating /Users/saleson/Desktop/openjdk/jdk-jdk-11-28/build/macosx-x86_64-normal-server-slowdebug/spec.gmk
config.status: creating /Users/saleson/Desktop/openjdk/jdk-jdk-11-28/build/macosx-x86_64-normal-server-slowdebug/bootcycle-spec.gmk
config.status: creating /Users/saleson/Desktop/openjdk/jdk-jdk-11-28/build/macosx-x86_64-normal-server-slowdebug/buildjdk-spec.gmk
config.status: creating /Users/saleson/Desktop/openjdk/jdk-jdk-11-28/build/macosx-x86_64-normal-server-slowdebug/compare.sh
config.status: creating /Users/saleson/Desktop/openjdk/jdk-jdk-11-28/build/macosx-x86_64-normal-server-slowdebug/Makefile

====================================================
A new configuration has been successfully created in
/Users/saleson/Desktop/openjdk/jdk-jdk-11-28/build/macosx-x86_64-normal-server-slowdebug
using configure arguments '--with-boot-jdk=/Users/saleson/dev_tools/openjdk/jdk-11.0.14.1+1/Contents/Home --with-debug-level=slowdebug --with-native-debug-symbols=internal --with-target-bits=64'.

Configuration summary:
* Debug level:    slowdebug
* HS debug level: debug
* JVM variants:   server
* JVM features:   server: 'aot cds cmsgc compiler1 compiler2 dtrace epsilongc g1gc graal jfr jni-check jvmci jvmti management nmt parallelgc serialgc services vm-structs'
* OpenJDK target: OS: macosx, CPU architecture: x86, address length: 64
* Version string: 11-internal+0-adhoc.saleson.jdk-jdk-11-28 (11-internal)

Tools summary:
* Boot JDK:       openjdk version "11.0.14.1" 2022-02-08 OpenJDK Runtime Environment Temurin-11.0.14.1+1 (build 11.0.14.1+1) OpenJDK 64-Bit Server VM Temurin-11.0.14.1+1 (build 11.0.14.1+1, mixed mode)  (at /Users/saleson/dev_tools/openjdk/jdk-11.0.14.1+1/Contents/Home)
* Toolchain:      clang (clang/LLVM)
* C Compiler:     Version 10.0.0 (at /usr/bin/clang)
* C++ Compiler:   Version 10.0.0 (at /usr/bin/clang++)

Build performance summary:
* Cores to use:   4
* Memory limit:   16384 MB

接下来开始执行编译命令

make images

然后cpu疯狂运行,开始漫长的等待,直到出现下面的内容,表示编译成功

Creating ......
Creating support/demos/image/jfc/TableExample/TableExample.jar
Creating support/demos/image/jfc/TransparentRuler/TransparentRuler.jar
Creating jdk image
Finished building target 'images' in configuration 'macosx-x86_64-normal-server-slowdebug'

编译过程中会出现下面这些警告,可以忽略掉

注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译

进行编译好的jdk目录运行一下java -version命令检查是否正常

$ cd build/macosx-x86_64-normal-server-slowdebug/jdk/bin

$ ./java -version
openjdk version "11-internal" 2018-09-25
OpenJDK Runtime Environment (slowdebug build 11-internal+0-adhoc.saleson.jdk-jdk-11-28)
OpenJDK 64-Bit Server VM (slowdebug build 11-internal+0-adhoc.saleson.jdk-jdk-11-28, mixed mode)
参考

https://openjdk.java.net/groups/build/doc/building.html
https://www.jianshu.com/p/108c984f8872
https://blog.csdn.net/u012667477/article/details/119842942
https://www.jianshu.com/p/6cc741fa7cff
https://www.shangmayuan.com/a/c2a2464dba5e47f0918b2c67.html
https://blog.csdn.net/on_1y/article/details/38761511
https://zhuanlan.zhihu.com/p/398067307

### 回答1: java-7-openjdk-amd64.tar是一个开源的Java开发工具包,用于在64位AMD架构的计算机上运行Java应用程序。 这个.tar文件是一个压缩文件,可以用压缩软件(例如tar命令)解压缩。解压缩后会得到一个文件夹,其中包含了Java的运行时环境(JRE)和开发工具包(JDK)。 Java 7是Java的一个版本,具有许多功能和改进。通过安装这个.tar文件提供的Java 7开发工具包,可以在计算机上运行和开发Java程序。这样,开发人员可以使用Java编写应用程序,而用户可以使用Java运行这些应用程序。 作为开源项目之一,Java 7 OpenJDK是由社区共同参与开发和维护的。它提供了完整的Java开发环境,包括Java编译器、Java虚拟机等工具。这个版本的Java被广泛应用于各种领域,如企业级应用开发、移动应用开发、Web开发等。 通过安装这个.tar文件提供的Java开发工具包,用户可以在自己的计算机上开发、编译和运行Java程序。这是因为Java是一个跨平台的编程语言,可以在各种操作系统上运行,包括Windows、Linux和Mac。 总之,Java-7-openjdk-amd64.tar是一个开源的Java开发工具包,提供了Java 7版本的运行时环境和开发工具,可以在64位AMD架构的计算机上使用。这个工具包支持跨平台的Java应用程序开发和运行。 ### 回答2: Java-7-openjdk-amd64.tar 是一个开发工具和运行环境,适用于64位的AMD处理器。这个文件是Java开发套件的一部分,可以通过下载和安装来使用。 Java-7-openjdk-amd64.tar是一个压缩文件,扩展名为.tar。.tar是常见的UNIX或Linux系统中的压缩格式。要使用这个文件,你需要首先解压缩它。 一旦解压缩完成,你会得到一个包含Java开发环境的目录。这个目录中包含了各种工具和库文件,用于开发Java应用程序。通过将这个目录添加到系统的PATH变量中,你可以在命令行中直接运行Java开发工具。 Java-7-openjdk-amd64.tar适用于Java 7版本的OpenJDKOpenJDK是一个开源的Java开发工具套件,提供了编译器、虚拟机和各种类库,用于开发和运行Java应用程序。 在解压缩和安装Java-7-openjdk-amd64.tar之后,你就可以开始使用Java进行编码和运行程序了。可以通过运行Java编译器将Java源代码编译成字节码,然后使用Java虚拟机来执行这些字节码。 总而言之,Java-7-openjdk-amd64.tar是Java 7版本的OpenJDK的压缩文件,用于64位的AMD处理器。通过解压缩和安装它,你可以获得Java开发工具和运行环境,从而可以进行Java编码和执行Java程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值