osx下编译openjdk10
环境准备
软件 | 版本 | 备注 |
---|---|---|
操作系统macOS | 10.13.4 | |
Xcode | 9.2 | 基础环境 |
homebrew | 1.6.3 | 用于安装相关lib |
下载源码
openjdk代码使用Mercurial(hg)版本管理工具进行管理.用如下命令进行该工具的安装
1
#brew install mercurial
只需通过如下命令即可进行下载
1
hg clone http://hg.openjdk.java.net/jdk10/jdk10/
如果由于未知原因,openjdk的服务器访问速度很慢,可以考虑方式给hg加上合适的代理线路访问
如下,修改~/.hgrc增加http代理
1
2[http_proxy]
host=127.0.0.1:8580下载完代码以后,内容如下所示
更多的源代码使用get_source.sh进行下载
1
bash ./get_source.sh
接着会下载剩余的openjdk源码
下载完后得到目录如下所示
编译项目
查看common/doc/build.html 了解相关参数
我的生成命令为
1
2
3
4
5
6bash ./configure \
--with-debug-level=slowdebug
--with-target-bits=64 \
--with-jobs=8 \
--disable-warnings-as-errors \
--with-jvm-variants=server中间可能会出现缺少xxx库的情况
这个时候使用
1
brew install xxx
安装即可
运行configure成功后会有如下图显示
接着就是编译项目了
1
make
接下来就等着CPU满载编译吧,当看到如下图后,编译就完成了
编译的目标文件生成在build/xxx 目录下xxx因编译选项的不同而异
测试
在 build/macosx-x86_64-normal-server-slowdebug/jdk
下
查看java版本
1
java -version
如图所示
编译运行Hello World项目
编写
Main.java
文件,如下:1
2
3
4
5public class Main{
public static void main(String[] args){
System.out.println("Hello World");
}
}编译
1
./bin/javac Main.java
运行
1
./bin/java Main
如图所示
调试
在visual studio code中调试
visual studio code是一个功能适度的文本编辑器,用来浏览和debug代码非常合适,如下为将openjdk项目放在vscode中调试的教程
用vscode打开openjdk10源码文件夹
安装c/c++插件
安装完插件后,会重新加载项目,加载后按ctrl + F5启动调试,初次调试选择C++环境,如下:
在弹出的launch.json中,配置相关运行参数,我的配置如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "编译java文件",
"type": "cppdbg",
"request": "launch",
"program": "build/macosx-x86_64-normal-server-slowdebug/jdk/bin/javac",
"args": ["Main.java"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb"
},
{
"name": "运行java程序",
"type": "cppdbg",
"request": "launch",
"program": "build/macosx-x86_64-normal-server-slowdebug/jdk/bin/java",
"args": ["Main"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb"
}
]
}
在CLion中调试
用clion 导入项目即可自动生成cmake项目
为了加快项目index,可仅勾选hotspot/src/cpu/x86即可
在hotspot/src/jdk.hotspot.agent仅勾选macosx
添加运行调试项
上面两个配置中,将Before Luanch的Build去掉,因为我们已经编译过一遍完整的项目,不需要启动前再次编译