一、 Mac虚拟机编译前准备,下载所需资源
a) 因为虚拟机的大部分代码是由Java编写的,所以编译openjdk13需要默认安装一个jdk,所以需要先安装jdk12,安装包下载链接如下:
官方链接:可以使用迅雷下载,下载过程中可能出现速率降为0,暂停后重新开始即可
https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10.2/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.pkg
腾讯微云:链接: https://share.weiyun.com/5DlfG12
百度网盘: 链接: https://pan.baidu.com/s/1eZ1j10YM-tDU4vqvSYSkiQ 提取码:5dx1
b) 下载openjdk13源码
方法一:用官网使用的版本控制工具Mercurial下载
下载Mercurial
官网下载:https://www.mercurial-scm.org/wiki
腾讯微云:链接:https://share.weiyun.com/54BT6jM
百度网盘:链接:https://pan.baidu.com/s/1HmhekImBmo1WCusj3pbcmA 提取码:cfza
双击下载下来的Mercurial-5.2-macosx10.14.pkg文件安装后,命令行运行下列命令拉取openjdk13源码
> hg clone http://hg.openjdk.java.net/jdk/jdk13/
网络好的话,等待20分钟就好了
方法二:直接从网上下载zip压缩包
腾讯微云:链接:https://share.weiyun.com/59GESWa
百度网盘:链接:https://pan.baidu.com/s/1sLT9Ge_X27UUGV_OI-Avsg 密码:wydp
二、开始编译jdk13
进入jdk13根目录
> cd /jdk13
> bash configure
这步是检查配置信息,会生成一个configure.log文件,可以根据命令行或者生成的configure.log文件定位问题信息,
比如最开始会报
No xcodebuild tool and no system framework headers found, use --with-sysroot or --with-sdk-name to provide a path to a valid SDK
原因是没有找到xcodebuild工具,
如果没有安装xcode,建议先安装xcode,默认安装xcode后,运行以下命令解决该问题
> sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
再次运行,
> bash configure
还会报同样的错误,这次会有一个新的错误提示,大意是接受Xcode/iOS许可需要管理员权限
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
configure: error: Unable to determine SYSROOT and no headers found in /System/Library/Frameworks. Check Xcode configuration, --with-sysroot or --with-sdk-name arguments.
根据提示,运行以下命令
> sudo xcodebuild -license
根据提示,按下回车键查看协议许可的内容,按空格键翻页到许可的最后,根据提示键入agree,回车,即表示同意了协议许可
Hit the Enter key to view the license agreements at '/Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf'
再次运行
> bash configure
这次不出意外会出现以下内容,表示检查配置成功,下边还会有一些配置的总结(Configuration summary),比如debug级别
====================================================
A new configuration has been successfully created in
/Users/vimin/Experts/JVM/jdk13/build/macosx-x86_64-server-release
using default settings.
编译之前可以进行一些环境变量的设置,比如:
语言选项
> export LANG=C
开始编译jdk
> make all
等待结果输出Finished,表示编译成功
Finished building target 'all' in configuration 'macosx-x86_64-server-release'
三、验证编译结果
> cd jdk13/build/macosx-x86_64-server-release/jdk/bin/
> ./java -version
出现以下结果表示成功
openjdk version "13-internal" 2019-09-17
OpenJDK Runtime Environment (build 13-internal+0-adhoc.vimin.jdk13)
OpenJDK 64-Bit Server VM (build 13-internal+0-adhoc.vimin.jdk13, mixed mode)
将该jdk13/build/macosx-x86_64-server-release/jdk添加至JAVA_HOME即可作为默认的jdk使用