JDK源码——JDK8源码编译全流程(linux)
摘要
大家平時(shí)用的JDK都是orcal官網(wǎng)等進(jìn)行編譯好了。但是有同學(xué)在公司做開(kāi)發(fā)時(shí)候或者是自學(xué)習(xí)的時(shí)候需要對(duì)源碼進(jìn)行操作,甚至對(duì)JDK做定制化的開(kāi)發(fā)的時(shí)候,就需要我們自己進(jìn)行源碼進(jìn)行重新編譯。因此博文將詳細(xì)介紹JDK8源碼自編譯的流程,給大家一個(gè)學(xué)習(xí)和參考的方法。
一、linux系統(tǒng)安裝所需的依賴(lài)
yum install alsa-lib-devel cups-devel libX* gcc gcc-c++ freetype-devel libstdc++-static ant make yum install clang -y yum install clang++ -y yum install autoconf -y yum install freetype freetype-config -y?檢查依賴(lài)是否安裝成功:
?二、安裝一個(gè)jdk作為bootstrap jdk
你要編譯openjdk8 那么電腦上至少都要裝一個(gè)jdk7,下圖是我電腦上配置的jdk,配置流程跟在Linux上配置jdk一樣的
三、下載openjdk源碼
Java Platform, Standard Edition 8 ReferenceImplementations
四、自動(dòng)配置
解壓下載好的源碼包之后,進(jìn)入解壓后的源碼包(下圖為目錄結(jié)構(gòu)),輸入 sh configure 進(jìn)行自動(dòng)配置(默認(rèn)沒(méi)有build目錄,這是編譯成功后生成的)
五、進(jìn)行編譯
第一次編譯輸入make all (全量編譯)指令,等待時(shí)間比較久,耐心等待
進(jìn)入build目錄在進(jìn)入生成的 linux-x86_64-normal-server-release目錄
這里面的images目錄是編譯生成的jdk成品鏡像,?
六、源碼編譯結(jié)果測(cè)試
修改好自己的代碼后進(jìn)行 make images(增量編譯) 就能完成源碼的修改并生效。PS:給虛擬機(jī)的內(nèi)存要大,不然打開(kāi)idea執(zhí)行編譯是內(nèi)存會(huì)不夠用,或者把idea關(guān)閉之后執(zhí)行編譯
特別提示:注意的是此JDK源碼是在linux下進(jìn)行編譯的,因此生成的SDK的包只能在linux下能運(yùn)行成功。如果將這個(gè)SDK導(dǎo)入woidow將不會(huì)起作用。
有朋友就會(huì)問(wèn),我平時(shí)碼代碼的時(shí)候都是在window工作的,你用Unix內(nèi)核的系統(tǒng)給我編譯出來(lái)的玩意能在window上運(yùn)行么?回答肯定是不行的,還記得java為什么能跨平臺(tái)么?沒(méi)錯(cuò)不是java能跨平臺(tái),而是JVM的實(shí)現(xiàn)是居于不同平臺(tái)的,那就意味著,不同平臺(tái)編譯出來(lái)的JDK只能在對(duì)應(yīng)平臺(tái)上運(yùn)行,JVM根據(jù)不同平臺(tái)翻譯為對(duì)應(yīng)的機(jī)器碼,JVM才是java能跨平臺(tái)的基石;那么window平臺(tái)的碼友就不好意思了,只能自己嘗試在window上編譯。
博文參考
JDK---00Linux上編譯openjdk8 - Jenne - 博客園
Ubuntu14.04LTS編譯JDK1.8 - _小妖 - 博客園
Linux下編譯OpenJDK源碼 - 簡(jiǎn)書(shū)
Java Platform, Standard Edition 8 ReferenceImplementations
總結(jié)
以上是生活随笔為你收集整理的JDK源码——JDK8源码编译全流程(linux)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 1008 数组元素循环右移问题 (20分
- 下一篇: 授狗l输入法linux,[最好]狗狗输入