什么是編譯?
?把一個源程序翻譯成目標程序的工作過程。
什么是編譯JDK
JDK中包含著JAVA的運行環境(JVM+Java系統類庫)和JAVA工具。
JVM 是由C語言寫成的,類庫和JAVA工具包含著Java代碼 ,eg: JavaC。
編譯JVM就是把c語言編譯成匯編語言,編譯Java 就是把Java語言編譯成字節碼。
編譯JDK需要什么?
?1,JDK的源代碼 。
2,編譯工具: C語言的編譯器和Java的編譯器。
獲取源代碼
?方法之一:
?Mercurial代碼版本管理工具從Repository中直接取得源碼?
sudohg clone http://hg.openjdk.java.net/java8u/jdk8060 jdk8u60
cd jdk8u60sudoshget_source.sh
命令的作用,類似與 clone倉庫,然后 pull
擴展:hg 使用 教程(非常值得一看)、
如果沒有gh命令,需要安裝
$ sudo apt-get install python
$ sudo apt-get install python-all-dev
$ sudo apt-get install python-setuptools
$ sudo easy_install -U mercurial
準備編譯工具:
Bootstrap JDK
sudoadd-apt-repository ppa:openjdk-r/ppa
sudoapt-get update
sudoapt-getinstallopenjdk-7-jdk
C編譯工具
sudo apt-get install libasound-dev libcups2-dev build-essential
sudo apt-get install libxt-dev
sudo apt-get install libxtst-dev
編譯
1.??????sudo bash ./configure
2.??????sudo make all
活著直接運行,提示缺少什么,就通過apt-get 安裝什么
1.??????sudo bash ./configure
2.??????sudo make all
mark命令可以配置編譯參數,再次不進行贅述。
JDK的代碼結構
在JVM內部使用的是oop-klass 模型存儲的類對象
Klass?
使用Eclipse調試
1: 搭建Eclipse C++開發環境ubuntu下安裝eclipse IDE for C/C++ developers
2:導入項目
方法一:
方法二:
~進入Eclipse, ? ?選擇導入import工程 ?-> C/C++ -> Existing Code as Makefile Project ? -> ?單擊 Next ? -> 進入工程配置界面
? ? ? 在界面中:
? ? ? ? ? ? ?Project Name設為hotspot ?這個可以自己選擇
? ? ? ? ? ? ?Existing Code Location是/home/haogrgr/opt/myopenjdk/hotspot
? ? ? ? ? ? ?Toolchain那里選Linux GCC,然后按Finish.?
? ? ? ~把/hotspot/src目錄加入源碼索引方便代碼搜索, ? ?右鍵hotspot工程 ?-> properties -> C/C++ General -> Paths and Symbols -> Source Location選項卡?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ->?選擇Add Folder 吧 hotspot/src目錄加入
? ? ? ~設置啟動類, ? ?右鍵工程 -> Debug As -> Debug Configurations -> 右鍵左邊的C/C++ Application -> New -> 進入Main選項卡
? ? ? ?在選項卡中:
? ? ? ? ? ? ??C/C++ Application ? ? 選擇 ??/home/haogrgr/opt/myopenjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java
? ? ? ? ? ? ??因為我們這里不再eclipse里面編譯,所以這里選上 Disable auto build
然后切換到Arguments選項卡, 輸入Java的參數, 我們這里運行上面的Main類, 于是這里填上Main ? 也就是我們要執行的Java程序
? ? ? ?然后切換到Environment選項卡, 添加變量
? ? ? ? ? ? ? LD_LIBRARY_PATH=/home/haogrgr/opt/myopenjdk/build/linux-x86_64-normal-server-slowdebug/hotspot/linux_amd64_compiler2/debug
JAVA_HOME=/home/haogrgr/opt/myopenjdk/build/linux-x86_64-normal-server-slowdebug/jdk/
CLASSPATH=.:/home/haogrgr/opt/myopenjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin ? ? ? ?(因為我的Main類在/bin目錄下)
? ? ? ?3)點擊下面的Apply保存
? ? ? ?4)在eclipse中找到thread.cpp, 在219行打個斷點
? ? ? ?5)Debug運行上面配置的Debug, 可以看到順利調到了斷點