以下是我要做的步驟。 我認為計算機已經安裝了Visual Studio 2010。 我覺得Express版本應該可以正常工作,但是我還沒有嘗試過。
- 安裝cygwin。 確保已安裝此處列出的所有軟件包,其中一些默認情況下未安裝。 以防萬一,這是該表的副本,但建議與主源進行驗證:
二進制名稱 類別 包 描述 可執行文件 開發 Binutils GNU匯編器,鏈接器和二進制實用程序 制作工具 開發 使 為CYGWIN構建的'make'實用程序的GNU版本。 可執行文件 口譯員 m4 傳統Unix宏處理器的GNU實現 cpio.exe 實用程序 cpio 一個管理文件存檔的程序 gawk.exe 實用程序 awk 模式導向的掃描和處理語言 文件 實用程序 文件 使用“魔術”數字確定文件類型 壓縮文件 封存 壓縮 打包和壓縮(存檔)文件 解壓縮文件 封存 解壓縮 提取ZIP檔案中的壓縮文件 免費版 系統 ps 顯示系統中的可用和已用內存量 不要忘記將cygwin的'bin'文件夾添加到PATH中。
- 從此處安裝Mercurial并將“ hg”添加到PATH。
- 安裝用于Windows 7和.NET Framework 4的Microsoft Windows SDK 。
- 安裝DirectX SDK 。 JDK需要v9.0,但我很難找到它。 所以我決定不打擾并安裝最新的。 似乎工作正常。
- Bootstrap JDK是構建所必需的。 碰巧我使用了JDK6,但是假設任何> JDK6的版本都不會出現問題。
- 下載并安裝Ant 。 我使用的是1.8.2版本。 將Ant添加到PATH。
- 結帳來源。 由于多種原因,它是最復雜的部分。 “ hg”不是特別穩定,因此某些應該由我的腳本完成的操作是手動完成的。
因此,要在命令行中開始運行此命令:
hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u <some_folder>\openjdk7'
這應該下載帶有一些幫助腳本的根文件夾。
然后在cygwin中,轉到剛剛創建的“ openjdk7”文件夾并運行“ get_source.sh”。 “ get_source.sh”可能會失敗或只是掛起(這正是我所發生的事情)。 如果是這樣,則您可以嘗試使用“ –pull”標志(元數據的拉協議)。 我不確定為什么,但這對我有所幫助。 不幸的是,腳本不是以非常友好的方式編寫的,并且無法將任何“ hg”參數傳遞給源檢索腳本。 因此,您需要轉到“ make \ scripts \ hgforest.sh”并將“ –pull”添加到“ hg clone”的每次調用中。
而且即使添加“ -pull”后仍然失敗,嗯……只要放棄并手動運行以下命令:
hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/corba corba hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot hotspot hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/jaxp jaxp hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/jaxws jaxws hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/jdk jdk hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/langtools langtools
希望現在您有資源并且可以有所幫助:)
- Build需要一些外部二進制文件和一個可在Windows下運行的'make.exe'版本。 cygwin隨附的'make'并沒有真正起作用,因為路徑名中的驅動器字母存在一些問題。
接下來是我們需要編譯幾個文件。 一種是“ make.exe”的固定版本。 另一個是FreeType庫,僅可作為源下載。
如果您不希望編譯所有這些東西,而只想輕松編譯JDK,則建議從此處下載二進制文件(這是我的云端硬盤)。 將“ make.exe”解壓縮到“ openjdk7 / bin”中。 請注意,該軟件包中的“ make.exe”非常老,需要cygintl-3.dll,當前cygwin并未提供。 要修復此問題,只需復制cygintl-8.dll-> cygintl-3.dll。
Freetype lib和dll必須放在ALT_FREETYPE_LIB_PATH conf變量引用的文件夾中(請參閱步驟13)。 另外,仍然需要一些Freetype標頭,并通過make通過ALT_FREETYPE_HEADERS_PATH變量找到它們(請參見步驟13)。 這意味著您還需要下載源代碼。如果您不是在尋找簡單的解決方案,而是想自己編譯這些二進制文件,請按照以下說明進行操作:
- 從這里下載make 3.82并解壓縮。 找到“ config.h.W32”并取消注釋行,定義為“ HAVE_CYGWIN_SHELL”。 在Visual Studio中打開make_msvc_net2003.sln解決方案,選擇“發布”配置并進行構建。 在“發布”文件夾中,您將獲得“ make_msvc.net2003.exe”,并將其重命名為“ make.exe”。
- 現在編譯FreeType:
- 從此處下載FreeType v.2.4.7的源。
- 將其解壓縮到某個位置,然后在Visual Studio中打開“ \ builds \ win32 \ vc2010 \ freetype.sln”。
- 轉到項目屬性(在項目樹中的項目上單擊鼠標右鍵),然后在“配置屬性/常規/配置類型”中選擇“動態庫(.ddl)”,然后將輸出重命名為“ freetype”。
- 更新ftoption.h,添加以下兩行:
#定義FT_EXPORT(x)__declspec(dllexport)x
#定義FT_BASE(x)__declspec(dllexport)x - 進行構建,您將在objs \ win32 \ vc2010中獲得dll和lib。
- 不要忘記為“ ALT_FREETYPE_LIB_PATH”和“ ALT_FREETYPE_HEADERS_PATH”變量分配適當的值(請參閱步驟13)。
- 我在javadoc生成方面遇到了一些問題,但由于OutOfMemory失敗。 為了修復它,我不得不更改“ openjdk7 \ jdk \ make \ docs \ Makefile”。
這段代碼:ifeq ($(ARCH_DATA_MODEL),64)MAX_VM_MEMORY = 1024 else ifeq ($(ARCH),universal)MAX_VM_MEMORY = 1024 elseMAX_VM_MEMORY = 512 endif
必須用以下內容替換:
ifeq ($(ARCH_DATA_MODEL),64)MAX_VM_MEMORY = 1024 else ifeq ($(ARCH),universal)MAX_VM_MEMORY = 1024 elseMAX_VM_MEMORY = 1024 endif
- 復制“ msvcr100.dll”到以下目錄:
cp /cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 10.0/Common7/Packages/Debugger/X64/msvcr100.dll ./drops/
- 確保Windows之前的cygwin的“ find.exe”在PATH中。 最簡單的方法是將其復制到“ openjdk7 / bin”,然后在當前PATH的開頭進行設置。
- 創建一個類似于以下文件的批處理文件。 不要忘記適當地更新路徑:
ALT_BOOTDIR=C:/Stuff/java_libs/jdk1.6.0_25 ANT_HOME=C:/Stuff/java_libs/apache-ant-1.8.2 JAVA_HOME= CLASSPATH= PATH=C:/Stuff/openjdk7/bin;%PATH% ALLOW_DOWNLOADS=true ALT_MSVCRNN_DLL_PATH=C:/Stuff/java_libs/openjdk7/dropsC:\WINDOWS\system32\cmd.exe /E:ON /V:ON /K 'C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd' /Release /xp /x86
- 運行批處理文件。 現在,您已經完全配置了環境,可以開始構建了。 運行“ bash”,然后在shell中執行“ make”:
make ARCH_DATA_MODEL=32 ALT_OUTPUTDIR=C:/Users/Stas/Stuff/java_libs/openjdk7/output_32 ALT_FREETYPE_LIB_PATH=C:/Users/Stas/Stuff/java_libs/openjdk7/freetype-2.4.7/objs/win32/vc2010 ALT_FREETYPE_HEADERS_PATH=C:/Users/Stas/Stuff/java_libs/openjdk7/freetype-2.4.7/include ALT_BOOTDIR=C:/Users/Stas/Stuff/java_libs/jdk1.6.0_25 ALT_DROPS_DIR=c:/OpenJDK/ALT_DROPS_DIR ALT_DROPS_DIR=C:/Users/Stas/Stuff/java_libs/openjdk7/drops HOTSPOT_BUILD_JOBS=4 PARALLEL_COMPILE_JOBS=4 2>&1 | tee C:/Stuff/java_libs/openjdk7/output_32.log
這將開始構建32位JDK。
- 喝咖啡,茶或您想要的任何東西,然后大約一個小時后,您應該會看到類似以下的內容:
#-- Build times ---------- Target all_product_build Start 2012-09-01 23:08:55 End 2012-09-01 23:55:48 00:02:35 corba 00:06:46 hotspot 00:00:30 jaxp 00:00:51 jaxws 00:35:30 jdk 00:00:37 langtools 00:46:53 TOTAL -------------------------
參考:來自Stas博客博客的JCG合作伙伴 Stanislav Kobylansky在Windows上構建OpenJDK 。
翻譯自: https://www.javacodegeeks.com/2012/09/stass-blog-building-openjdk-on-windows.html