前言
如果想要了解如何在此版本下编译openjdk可以 参考前文。
执行全量的build可以使用如下命令:
make all
但是如果只是build hotspot。则如下即可:
make hostspot
在build目录的hotspot目录下可以看到build结果。
下边简单说说可能会遇到的问题。
gdb版本回退
默认情况下homebrew安装的gdb版本是已经大于8.1了。在此版本之上编译有点问题, 会出现如下的报错:
During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.
version
解决方式是将gdb回退到8.0.1版本即可。
$ brew uninstall gdb
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c3128a5c335bd2fa75ffba9d721e9910134e4644/Formula/gdb.rb
gdbsign
极有可能出现下方的问题。
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
这种情况需要手工嵌一个证书即可。可见此处的 qed 的回答即可。
https://stackoverflow.com/questions/11504377/gdb-fails-with-unable-to-find-mach-task-port-for-process-id-error
切记需要切换到root账号。
libjvm.dylib丢失
这种也不明白为什么就没这个文件。但是能发现在gdbTest目录是有这个文件的。尝试copy过来即可。
信号量
可能会出现下列异常
Thread 3 received signal SIGSEGV, Segmentation fault.
不用太理会。这是jvm自身的signal处理机制。尝试continue即可。如果真的觉得很烦, 可以尝试修改 hotspot/variant-server/libjvm/hotspot 中的 init_gdb方法,将
handle SIGUSR1 nostop noprint
handle SIGUSR2 nostop noprint
修改为
handle SIGUSR1 nostop noprint
handle SIGUSR2 nostop noprint
handle SIGSEGV pass noprint nostop
大功告成
enjoy it!
all
网友评论