openjdk常用編譯引數----摘錄《深入理解java虛擬機器》第三版

詩水人間發表於2020-12-05

編譯引數可能以後用的到,因此將其摘錄下來方便日後回來找

來自原文的1.6.4節 進行編譯

  需要下載的編譯環境和依賴專案都齊備後,我們就可以按照預設配置來開始編譯了,但通常我們 編譯OpenJDK的目的都不僅僅是為了得到在自己機器中誕生的編譯成品,而是帶著除錯、定製化等需 求,這樣就必須瞭解OpenJDK提供的編譯引數才行,這些引數可以使用“bash configure–help”命令查詢 到,筆者對它們中最有用的部分簡要說明如下:

–with-debug-level=<level>:設定編譯的級別,可選值為release、fastdebug、slowde-bug,越往後進 行的優化措施就越少,帶的除錯資訊就越多。還有一些虛擬機器除錯引數必須在特定模式下才可以使 用。預設值為release。


–enable-debug:等效於–with-debug-level=fastdebug。


–with-native-debug-symbols=<method>:確定除錯符號資訊的編譯方式,可選值為none、 internal、external、zipped。


–with-version-string=<string>:設定編譯JDK的版本號,譬如java-version的輸出就會顯示該資訊。 這個引數還有–with-version-<part>=<value>的形式,其中part可以是pre、opt、build、major、minor、 security、patch之一,用於設定版本號的某一個部分。


–with-jvm-variants=<variant>[,<variant>…]:編譯特定模式(V ariants)的HotSpot虛擬機器,可以 多個模式並存,可選值為server、client、minimal、core、zero、custom。


–with-jvm-features=<feature>[,<feature>…]:針對–with-jvm-variants=custom時的自定義虛擬機器特 性列表(Features),可以多個特性並存,由於可選值較多,請參見help命令輸出。
·–with-target-bits=<bits>:指明要編譯32位還是64位的Java虛擬機器,在64位機器上也可以通過交叉 編譯生成32位的虛擬機器。


–with-<lib>=<path>:用於指明依賴包的具體路徑,通常使用在安裝了多個不同版本的Bootstrap JDK和依賴包的情況。其中lib的可選值包括boot-jd、freetype、cups、x、alsa、libffi、jtreg、libjpeg、 giflib、libpng、lcms、zlib。


–with-extra-<flagtype>=<flags>:用於設定C、C++和Java程式碼編譯時的額外編譯器引數,其中 flagtype可選值為cflags、cxxflags、ldflags,分別代表C、C++和Java程式碼的引數。


–with-conf-name=<name>:指定編譯配置名稱,OpenJDK支援使用不同的配置進行編譯,預設會 根據編譯的作業系統、指令集架構、除錯級別自動生成一個配置名稱,譬如“linux-x86_64-serverrelease”,如果在這些資訊都相同的情況下儲存不同的編譯引數配置,就需要使用這個引數來自定義配 置名稱。


以上是configure命令的部分引數,其他未介紹到的可以使用“bash configure–help”來檢視,所有引數均通過以下形式使用:bash configure --enable-debug --with-jvm-variants=server

相關文章