Java技術(shù)專題「OpenJDK專題」想不想編譯屬于你自己的JDK呢奇瘦?(Windows10環(huán)境)

Win10下編譯OpenJDK8

編譯環(huán)境

  • Windows10專業(yè)版64位桩卵;
編譯前準(zhǔn)備

Tip: 以下軟件的安裝和解壓目錄盡量不要包含中文或空格验靡,不然可能會(huì)出現(xiàn)問(wèn)題

  1. 安裝 Visual Studio 2010 Professional

在windows下編譯JDK需要使用Visual Studio 2010 Professional,推薦下載地址:https://msdn.itellyou.cn/

image

最好下載英文版的IDE雏节,不然可能會(huì)出現(xiàn)問(wèn)題胜嗓,下載完成后只用勾選安裝C++部分就行

  1. 準(zhǔn)備OpenJDK8

首先下載OpenJDK8,推薦下載地址:https://download.java.net/openjdk/jdk8 钩乍, 下載完成后解壓

image

  1. 編譯JDK環(huán)境安裝(如果已經(jīng)安裝辞州,跳過(guò)此部)

下載完成后配置JDK環(huán)境變量(JAVA_HOME、Path牵啦、classpath)

  1. 安裝Cygwin
  • 編譯JDK需要使用到Unix和Linux上的一些工具軟件亚情,Cygwin可以在Windows上運(yùn)行這些系統(tǒng)上的軟件。

  • 推薦下載地址:http://www.cygwin.com/

    image

下載最新版的Cygwin后安裝哈雏,由于默認(rèn)的安裝只會(huì)安裝一些必要的軟件楞件,所以安裝過(guò)程中需要選擇安裝一些額外的包,需要的包如下圖:

image

如果已經(jīng)安裝完了Cygwin軟件后裳瘪,想要繼續(xù)安裝其他的軟件包土浸,可以再次運(yùn)行Cygwin的安裝程序,在過(guò)程中確保其選中了本地的Cygwin安裝目錄彭羹,一直點(diǎn)擊下一步后會(huì)出現(xiàn)選擇安裝包的界面黄伊。

  1. 準(zhǔn)備FreeType-2.7
  • 編譯JDK需要用到FreeType,它是一個(gè)字體渲染庫(kù)派殷,官方文檔中沒(méi)有提及还最,但它是必須的。

  • 最好使用2.7版本的毡惜,我先前使用較新版本的會(huì)出現(xiàn)問(wèn)題拓轻。

  • 推薦下載地址:https://www.freetype.org/ ,下載完成后解壓: https://www.freetype.org/download.html

  • 運(yùn)行Visual Studio 2010经伙,依次點(diǎn)擊 File -> Open -> Project/Solution

    image

  • 選擇打開(kāi) freetype-2.7\builds\windows\vc2010\freetype.sln 文件

    image

  • 選中項(xiàng)目后右擊選擇Properties扶叉,彈出窗口后操作如下圖:

    image


image

點(diǎn)擊應(yīng)用后再點(diǎn)擊確定關(guān)閉窗口,右擊項(xiàng)目帕膜,點(diǎn)擊 Build 按鈕后成功編譯出lib文件枣氧。

再次右擊項(xiàng)目,點(diǎn)擊 Properties按鈕泳叠,彈出窗口作瞄。


image

點(diǎn)擊應(yīng)用后再點(diǎn)擊確定關(guān)閉窗口茶宵;右擊項(xiàng)目危纫,點(diǎn)擊 Build 按鈕后成功編譯出dll文件。

在 freetype-2.7/ 目錄下新建 lib 目錄
將 freetype-2.7\objs\vc2010\x64\ 目錄下的 freetype.lib 和 freetype.dll 兩個(gè)文件拷貝到lib目錄下

開(kāi)始編譯

  1. 生成編譯配置腳本

運(yùn)行Cygwin乌庶,cd 進(jìn)入OpenJDK8的根目錄

Tip :Cygwin中的目錄可以直接用Windows的目錄標(biāo)記方式种蝶,比如:‘D:\DirName\file.txt’,單必須使用單引號(hào)包圍,也可以使用類(lèi)似linux的形式:如: /cygdrive/d/DirName/file.txt,推薦使用后一種方式兼容性較好瞒大。

輸入如下命令:
./configure --with-freetype=你本機(jī)路徑/freetype-2.7/ --with-target-bits=64 --enable-debug

注意以上的freetype路徑替換成你本機(jī)上的路徑螃征,運(yùn)行成功后顯示如下:

image

  1. 編譯JDK

Cygwin切換到Open JDK根目錄下,執(zhí)行如下命令

make all

命令執(zhí)行后會(huì)開(kāi)始編譯透敌,編譯過(guò)程可能比較久盯滚,具體看機(jī)器性能踢械,編譯成功后顯示如下:


image
  1. 驗(yàn)證編譯結(jié)果

在這里僅簡(jiǎn)單驗(yàn)證一下,官方說(shuō)需要用jtreg來(lái)進(jìn)行回歸測(cè)試魄藕,但該測(cè)試比較麻煩和耗時(shí)所以就先忽略運(yùn)行 cmd.exe 内列,進(jìn)入目錄 openjdk8\build\windows-x86_64-normal-server-fastdebug\jdk\bin,依次輸入命令:

javac -version
java -version
image

失敗問(wèn)題處理

  1. 提示cygwin太老背率,但使用的cygwin確實(shí)是1.7版本以后的版本话瞧,提示如下如圖:


    image
  • 這是由于OpenJDK8自帶的生成配置的腳本的問(wèn)題。


    image
  • 文本編輯器打開(kāi)OpenJDK目錄下的 openjdk8\common\autoconf\generated-configure.sh 這個(gè)文件搜索上面的提示文字“Your cygwin is too old在這里插入圖片描述寝姿,將if條件語(yǔ)句注釋掉


    image
  1. 編譯images庫(kù)時(shí)失敗
    執(zhí)行編譯到images相關(guān)庫(kù)的時(shí)候會(huì)出錯(cuò)


    image

在這里插入圖片描述錯(cuò)誤信息中顯示了一個(gè)CreateJars.gmk出錯(cuò)交排,查閱相關(guān)資料后發(fā)現(xiàn)是文件中需要加上兩個(gè)回車(chē)符號(hào),也就是 '\r’表示為CR這個(gè)符號(hào)饵筑。

  • 用 Notepad++ 軟件打開(kāi)OpenJDK目錄里的 CreateJars.gmk 這個(gè)文件
  • 依次點(diǎn)擊菜單欄中的:視圖 -> 顯示符號(hào) -> 顯示所有符號(hào)
  • 然后就可以看到所有的符號(hào)埃篓,包括換行符和回車(chē)符


    image

找到文件中如下的地方:


image

在兩個(gè) ‘class$$’ 中間加入回車(chē)符號(hào)(按下Ctrl + M),如下圖:


image

修改完成后保存根资,執(zhí)行 make clean 命令清理后再次執(zhí)行 make all 編譯

參考文章

文本在編寫(xiě)和實(shí)施過(guò)程中參考了如下的博文或文章:

https://blog.csdn.net/wqlinloveruby/article/details/80409031
http://www.reibang.com/p/e85f93cc74cb
OpenJDK源碼目錄下的README-builds.html官方文檔
https://blog.csdn.net/qq0012520/article/details/86014579

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末都许,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子嫂冻,更是在濱河造成了極大的恐慌胶征,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桨仿,死亡現(xiàn)場(chǎng)離奇詭異睛低,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)服傍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)钱雷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吹零,你說(shuō)我怎么就攤上這事罩抗。” “怎么了灿椅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵套蒂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我茫蛹,道長(zhǎng)操刀,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任婴洼,我火速辦了婚禮骨坑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柬采。我一直安慰自己欢唾,他們只是感情好且警,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著礁遣,像睡著了一般振湾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亡脸,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天押搪,我揣著相機(jī)與錄音,去河邊找鬼浅碾。 笑死大州,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的垂谢。 我是一名探鬼主播厦画,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼滥朱!你這毒婦竟也來(lái)了根暑?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤徙邻,失蹤者是張志新(化名)和其女友劉穎排嫌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體缰犁,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淳地,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帅容。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颇象。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖并徘,靈堂內(nèi)的尸體忽然破棺而出遣钳,到底是詐尸還是另有隱情,我是刑警寧澤麦乞,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布蕴茴,位于F島的核電站,受9級(jí)特大地震影響路幸,放射性物質(zhì)發(fā)生泄漏荐开。R本人自食惡果不足惜付翁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一简肴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧百侧,春花似錦砰识、人聲如沸能扒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)初斑。三九已至,卻和暖如春膨处,著一層夾襖步出監(jiān)牢的瞬間见秤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工真椿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹃答,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓突硝,卻偏偏與公主長(zhǎng)得像测摔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子解恰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容