前言
如果想要了解如何在此版本下編譯openjdk可以 參考前文。
執(zhí)行全量的build可以使用如下命令:
make all
但是如果只是build hotspot。則如下即可:
make hostspot
在build目錄的hotspot目錄下可以看到build結(jié)果。
下邊簡(jiǎn)單說說可能會(huì)遇到的問題。
gdb版本回退
默認(rèn)情況下homebrew安裝的gdb版本是已經(jīng)大于8.1了。在此版本之上編譯有點(diǎn)問題, 會(huì)出現(xiàn)如下的報(bào)錯(cuò):
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
極有可能出現(xiàn)下方的問題。
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
這種情況需要手工嵌一個(gè)證書即可。可見此處的 qed 的回答即可。
https://stackoverflow.com/questions/11504377/gdb-fails-with-unable-to-find-mach-task-port-for-process-id-error
切記需要切換到root賬號(hào)。
libjvm.dylib丟失
這種也不明白為什么就沒這個(gè)文件。但是能發(fā)現(xiàn)在gdbTest目錄是有這個(gè)文件的。嘗試copy過來即可。
信號(hào)量
可能會(huì)出現(xiàn)下列異常
Thread 3 received signal SIGSEGV, Segmentation fault.
不用太理會(huì)。這是jvm自身的signal處理機(jī)制。嘗試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