Ubuntu下編譯JDK源碼並使用clion斷點debug

本地環境準備

Ubuntu20.04、jdk8u262-b02、make4.2.1 、gcc 7.5.0、Clion2019.2

開始

之前試過在centOS7.3、win7下build,可能是環境的問題,在win7下無法debug進源碼,想着也不是經常debug這玩意,就學習的時候用,那麼就用Ubuntu虛擬機搞一個環境供學習用就可以了

下載源碼

這次下載一個標準版,進入jdk8u倉庫,下載版本jdk8u262-b02
可以使用hg下載,當然我這裏爲了方便直接點擊zip下載,網速慢的使用科學上網
官方倉庫地址: https://hg.openjdk.java.net/jdk8u
在這裏插入圖片描述
在這裏插入圖片描述
點擊zip下載,需要注意的是jdk8u下面還有很多子倉庫,需要全部下載纔是完整的文件,可以使用get_source.sh腳本下載子倉庫下的文件,我這裏就直接手工點進去全部下載了,反正也沒有幾個
在這裏插入圖片描述
點擊子倉庫繼續下載,按照上面下載的方式繼續下載
在這裏插入圖片描述
下載完成後的目錄結構
在這裏插入圖片描述

配置環境

然後拖到Ubuntu中,再就開始配置環境了,關於環境配置和如何編譯,都可以看看源碼目錄下的README
我這裏的: make4.2.1 、gcc 7.5.0
需要注意的是不能使用高版本的gcc,我這裏Ubuntu20.04默認的是gcc9,將其降到7,不然編譯會報錯!
降級過程:

sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --config gcc

在這裏插入圖片描述
配置bootstrap JDK
還需要一個bootstrap JDK,因爲源碼有些是java寫的,需要編譯出來。
下載bootstrap JDK,編譯JDK8,所以選用JDK7
https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html

在這裏插入圖片描述
安裝依賴

sudo apt-get install build-essential libxrender-dev xorg-dev libasound2-dev libcups2-dev gawk zip libxtst-dev libxi-dev libxt-dev gobjc

然後config

bash ./configure --with-target-bits=64 --with-num-cores=8 --with-debug-level=slowdebug --with-boot-jdk=/home/root1/jdk1.7.0_80 --enable-debug-symbols ZIP_DEBUGINFO_FILES=0

有了環境後,就進入源碼目錄下config它,關於這個配置參數,在jdk源碼目錄下的REAME裏面寫的很詳細
在這裏插入圖片描述
完成之後是這種的
在這裏插入圖片描述
如果需要修改什麼規格參數,比如版本號之類的,就在build目錄下的spec.gmk文件修改

編譯

make all

在這裏插入圖片描述
這樣就編譯完成了

在clion中debug源碼

clion只支持cmake項目,而這個是makefile
我這裏直接import爲一個cmake項目,它會自動生成cmakelists,打鉤那裏用默認的即可
在這裏插入圖片描述
然後配置項目,就是將可執行文件(類似這樣的: jdkSource\build\windows-x86_64-normal-server-slowdebug\jdk)替換爲我們剛剛編譯好的java,注意下面去掉build選項,不在IDE裏面build(在IDE裏面也build不起來,需要用那個腳本build。。。)
在這裏插入圖片描述
斷點打在java.c的Main中,啓動debug,發現就成功命中了,可以斷點debug了!

jdk源碼下載: https://download.csdn.net/download/w57685321/12456595

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章