Win10下編譯OpenJDK8


Win10下編譯OpenJDK8

 踩了無數的坑之后終於成功的在Windows10下編譯了OpenJDK8,在Windows下編譯JDK確實比較麻煩,所以在這里記錄下本人編譯的整個過程,可以作為備忘的同時還能分享給他人

相關參考文章

文本在編寫和實施過程中參考了如下的博文或文章:

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

編譯環境

  1. Windows10專業版64位;

編譯前准備

Tip: 以下軟件的安裝和解壓目錄盡量不要包含中文或空格,不然可能會出現問題

1.安裝 Visual Studio 2010 Professional

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

最好下載英文版的IDE,不然可能會出現問題,下載完成后只用勾選安裝C++部分就行

2. 准備OpenJDK8

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

3. 編譯JDK環境安裝

 編譯OpenJDK需要本機先安裝上JDK作為編譯JDK,而且該編譯JDK的版本必須要使用前一個版本的JDK,編譯OpenJDK8需要安裝JDK7 Update 7 以后的版本。

首先下載Oracle JDK7 並解壓,推薦下載地址:https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

下載完成后配置JDK環境變量(JAVA_HOME、Path、classpath)
配置完后驗證下:
java -version

4. 安裝Cygwin

 編譯JDK需要使用到Unix和Linux上的一些工具軟件,Cygwin可以在Windows上運行這些系統上的軟件

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

下載最新版的Cygwin后安裝,由於默認的安裝只會安裝一些必要的軟件,所以安裝過程中需要選擇安裝一些額外的包,需要的包如下圖:
選擇的Cygwin包Tip: 如果已經安裝完了Cygwin軟件后,想要繼續安裝其他的軟件包,可以再次運行Cygwin的安裝程序,在過程中確保其選中了本地的Cygwin安裝目錄,一直點擊下一步后會出現選擇安裝包的界面。

5. 准備FreeType-2.7

編譯JDK需要用到FreeType,它是一個字體渲染庫,官方文檔中沒有提及,但它是必須的。
最好使用2.7版本的,我先前使用較新版本的會出現問題。

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

運行Visual Studio 2010,依次點擊 File -> Open -> Project/Solution

在這里插入圖片描述選擇打開 freetype-2.7\builds\windows\vc2010\freetype.sln 文件
在這里插入圖片描述選中項目后右擊選擇Properties,彈出窗口后操作如下圖:
在這里插入圖片描述在這里插入圖片描述
點擊應用后再點擊確定關閉窗口,右擊項目,點擊 Build 按鈕后成功編譯出lib文件。

再次右擊項目,點擊 Properties按鈕,彈出窗口。
在這里插入圖片描述
點擊應用后再點擊確定關閉窗口;右擊項目,點擊 Build 按鈕后成功編譯出dll文件。

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

開始編譯

1.生成編譯配置腳本

運行Cygwin,cd 進入OpenJDK8的根目錄

Tip :Cygwin中的目錄可以直接用Windows的目錄標記方式,比如:‘D:\DirName\file.txt’,單必須使用單引號包圍,也可以使用類似linux的形式:如: /cygdrive/d/DirName/file.txt,推薦使用后一種方式兼容性較好。

輸入如下命令:

./configure --with-freetype=**/freetype-2.7/ --with-target-bits=64 --enable-debug

   
   
  
  
          
  
  
 
 
         
  • 1

注意以上的freetype路徑替換成你本機上的路徑

運行成功后顯示如下:
在這里插入圖片描述如果生成配置文件失敗,請查看下面的失敗問題處理

2.編譯JDK

Cygwin切換到JDK根目錄下
執行如下命令

make all

   
   
  
  
          
  
  
 
 
         
  • 1

命令執行后會開始編譯,編譯過程可能比較久,具體看機器性能
編譯成功后顯示如下:
在這里插入圖片描述
如果編譯失敗請查看下面的失敗問題處理

3.驗證編譯結果

在這里僅簡單驗證一下,官方說需要用jtreg來進行回歸測試,但該測試比較麻煩和耗時所以就先忽略
運行 cmd.exe ,進入目錄 openjdk8\build\windows-x86_64-normal-server-fastdebug\jdk\bin
依次輸入命令:
javac -version
java -version
在這里插入圖片描述可以看到自己編譯的JDK包含了一些獨特的信息

失敗問題處理

下面描述了本人在編譯過程中遇到過的問題和解決方法,如果你遇見了其他的問題,請參考其他相關博客或資料,同時歡迎在評論區探討該問題或解決方案

1.提示cygwin太老,但使用的cygwin確實是1.7版本以后的版本

提示如下如圖:
在這里插入圖片描述
這是由於OpenJDK8自帶的生成配置的腳本的問題。

文本編輯器打開OpenJDK目錄下的 openjdk8\common\autoconf\generated-configure.sh 這個文件
搜索上面的提示文字“Your cygwin is too old在這里插入圖片描述
將if條件語句注釋掉
在這里插入圖片描述

2.編譯images庫時失敗

執行編譯到images相關庫的時候會出錯
在這里插入圖片描述錯誤信息中顯示了一個CreateJars.gmk出錯,查閱相關資料后發現是文件中需要加上兩個回車符號,也就是 '\r’表示為CR這個符號。

用 Notepad++ 軟件打開OpenJDK目錄里的 CreateJars.gmk 這個文件
依次點擊菜單欄中的:視圖 -> 顯示符號 -> 顯示所有符號
然后就可以看到所有的符號,包括換行符和回車符
在這里插入圖片描述

找到文件中如下的地方:
在這里插入圖片描述在兩個 ‘class$$’ 中間加入回車符號(按下Ctrl + M),如下圖:
在這里插入圖片描述修改完成后保存,執行 make clean 命令清理后再次執行 make all 編譯

原文地址:https://blog.csdn.net/qq0012520/article/details/86014579


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM