第一章 Mac os下編譯openJDK 7

來源:互聯網
上載者:User

本人和書上的作者一樣,編譯的是openjdk 7. 過程中也是遇到了不少坑,查閱了很多資料,嘗試了使用jdk8,jdk7,jdk6,最終使用jdk7u71編譯成功,下面紀錄一下流程,以便他人能夠借鑒。 一、準備工作:

1.安裝Xcode,直接在App Store上下載即可,還有命令列工具


2.下載ant,Mac會內建ant,在/usr/local/Cellar/ant/1.9.7,如果沒有就去官網下一個,我是自己下了一個。然後,因為jdk/src/macosx/native/jobjc/JObjC.xcodeproj/project.pbxproj和jdk/make/java/jobjc/Makefile檔案中ant路徑寫死為/usr/bin/ant,所以要在usr/bin下面做一個軟串連,被坑了好久:

ln -s /Users/jiangchao08/Downloads/apache-ant-1.9.7/bin/ant /usr/bin/ant


3.下載openjdk 7的zip檔案,然後解壓縮,地址:https://jdk7.java.net/source.html


4.下載oracle jdk 7,我下載的是7u71 版本,地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html


5.安裝XQuartz


6.不要設定JAVA_HOME、CLASSPATH環境變數,可以在最後一行用unset JAVA_HOME、unset CLASSPATH來注釋掉


二、環境變數設定:

下面是我的環境變數的配置,在~/.bash_profile檔案裡配置;

export M2_HOME=/Users/jiangchao08/Downloads/apache-maven-3.3.9export ANT_HOME=/Users/jiangchao08/Downloads/apache-ant-1.9.7export PATH=$PATH:$M2_HOME/bin:$ANT_HOME/bin:/usr/binexport ALT_BOOTDIR=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Homeexport LANG=Cexport COMPILER_WARNINGS_FATAL=falseexport CC=clangexport COMPILER_WARNINGS_FATAL=falseexport USE_CLANG=trueexport LP64=1export BUILD_DEPLOY=falseexport ARCH_DATA_MODEL=64export LFLAGS='-Xlinker -lc++ -lstdc++'export HOTSPOT_BUILD_JOBS=8export USE_PRECOMPILED_HEADER=trueexport SHOW_ALL_WARNINGS=falseexport INCREMENTAL_BUILD=trueexport SKIP_DEBUG_BUILD=falseexport SKIP_FASTDEBUG_BUILD=trueunset JAVA_HOME

在正式編譯之前,先make sanity一下,如何成功,再正式編譯在openjdk路徑下使用命令: make debug_build


三、遇到的問題: 因為我嘗試了很多版本的jdk,在這裡我將所有出現的bug都紀錄下來,如果你編譯的是openjdk7,那麼非常不建議使用oracle jdk8 ,因為最後會出現很多的類找不到,或者方法找不到,畢竟openjdk7已經好多年了。所以推薦使用oracle jdk6和oracle jdk7來進行編譯openjdk 7:

1.ERROR: The Compiler version is undefined.

 ERROR: FreeType version  2.3.0  or higher is required.

(1)第一個error,是因為現在Xcode裡面沒有內建gcc,所以進行連結:

sudo ln -s gcc /Applications/Xcode.app/Contents/Developer/usr/bin/llvm-gcc

(2)第二個error,是因為FreeType版本太低,所以我是直接安裝了XQuartz


2.  BUILD FAILED

/home/xlf/jdk7u-dev/langtools/make/build.xml:452: The following error occurred while executing this line: /home/xlf/jdk7u-dev/langtools/make/build.xml:795: Compile failed; see the compiler error output for details.   解決方案: 將oracle jdk 8版本換成jdk 7解決
3.亂碼問題:

# 具體報錯openjdk/build/../build-debug/corba/gensrc/org/omg/PortableServer/AdapterActivatorOperations.java:8: ´íÎó: ±àÂëasciiµÄ    ²»¿ÉÓ³Éä×Ö·û* 2016??7??12?? ?????? ????05??39??22?? CST# 解決辦法find build-debug/corba/gensrc/org/ -name '*.java' | while read p; do native2ascii -encoding UTF-8 $p > tmpj; mv tmpj $p; doneexport _JAVA_OPTIONS=-Dfile.encoding=ASCII
4. clang不支援參數 -fpch-deps

# 具體報錯clang: error: unknown argument: '-fpch-deps'# 解決方案1. 首先尋找對應的設定檔find . -type f ! -name "*.java" | xargs grep -r "\-fpch\-deps"1.1 匹配的尋找結果如下(Mac來源於BSD,選擇BSD)./hotspot/make/bsd/makefiles/gcc.make:DEPFLAGS = -fpch-deps -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)./hotspot/make/linux/makefiles/gcc.make:DEPFLAGS = -fpch-deps -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)./hotspot/make/solaris/makefiles/gcc.make:DEPFLAGS = -fpch-deps -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)2 修改hotspot/make/bsd/makefiles/gcc.make2.1 注釋216-218行# Flags for generating make dependency flags.# ifneq ("${CC_VER_MAJOR}", "2")# DEPFLAGS = -fpch-deps -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)# endif2.2 在218行下添加下面代碼DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)ifeq ($(USE_CLANG),)  ifneq ($(CC_VER_MAJOR), 2)    DEPFLAGS += -fpch-deps  endifendif
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.