做網(wǎng)站得基礎(chǔ)西安外包網(wǎng)絡(luò)推廣
更好的閱讀體驗(yàn) \huge{\color{red}{更好的閱讀體驗(yàn)}} 更好的閱讀體驗(yàn)
本篇為深入理解 Java
虛擬機(jī)第一章的實(shí)戰(zhàn)內(nèi)容,推薦在學(xué)習(xí)前先掌握基礎(chǔ)的 Linux
操作、編譯原理基礎(chǔ)以及扎實(shí)的 C/C++
功底。
該系列的 GitHub
倉(cāng)庫(kù):https://github.com/Doge2077/learn-jvm
構(gòu)建編譯環(huán)境
系統(tǒng)準(zhǔn)備
在官方文檔上要求編譯
OpenJDK
至少需要2~4GB
的內(nèi)存空間(CPU核心數(shù)越多,需要的內(nèi)存越大),而且至少要6~8GB
的空閑磁盤空間,不要看OpenJDK
源碼的大小只有不到600MB
,要完成編譯,過程中會(huì)產(chǎn)生大量的中間文件,并且編譯出不同優(yōu)化級(jí)別(Product、FastDebug、SlowDebug)的HotSpot
虛擬機(jī)可能要重復(fù)生成這些中間文件,這都會(huì)占用大量磁盤空間。
參考我的虛擬機(jī)配置如下:
-
VM
虛擬機(jī)Ubuntu20.04
-
處理器
8
核,內(nèi)存8G
,硬盤40G
注意:所有文件所在目錄都不能包含中文。
環(huán)境準(zhǔn)備
下載 JDK12
源碼:
wget https://hg.openjdk.org/jdk/jdk12/archive/06222165c35f.tar.gz
通過
Mercurial
代碼版本管理工具從Repository
中直接取得源碼hg clone https://hg.openjdk.java.net/jdk/jdk12
解壓:
tar xvf 06222165c35f.tar.gz
安裝 GCC
編譯器:
sudo apt-get install build-essential
安裝后執(zhí)行:
gcc -v
如果版本為 gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
,版本太高會(huì)導(dǎo)致后面編譯失敗,需要卸載重裝 gcc
:
sudo apt-get remove gcc
安裝 gcc-7
:
sudo apt-get install gcc-7
sudo apt-get install g++-7# 設(shè)置默認(rèn)選項(xiàng)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100
sudo update-alternatives --config gcc
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100
sudo update-alternatives --config g++
再次執(zhí)行 gcc -v
可以看到版本為 gcc version 7.5.0 (Ubuntu 7.5.0-6ubuntu2)
即可。
進(jìn)入解壓后的 jdk12-06222165c35f
目錄 ,安裝在編譯過程中需要的依賴 FreeType
、CUPS
等若干第三方庫(kù):
sudo apt-get install libfreetype6-dev
sudo apt-get install libcups2-dev
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
sudo apt-get install libasound2-dev
sudo apt-get install libffi-dev
sudo apt-get install autoconf
安裝啟動(dòng) JDK
:
sudo apt-get install openjdk-11-jdk
進(jìn)行編譯
在解壓后的 jdk12-06222165c35f
目錄下,執(zhí)行:
bash configure --enable-debug --with-jvm-variants=server
如果缺少未安裝的庫(kù),根據(jù)報(bào)錯(cuò)提示安裝即可,成功后顯示:
然后,編譯,啟動(dòng)!
make images
打開資源管理查看進(jìn)程,可以看到八核線程汗液狂飆(
經(jīng)過長(zhǎng)達(dá)十分鐘左右的等待后,可以看到編譯如下信息,提示編譯成功:
Finished building target 'images' in configuration 'linux-x86_64-server-fastdebug'
該 linux-x86_64-server-fastdebug
目錄即為我們編譯后的 JDK
目錄,我們進(jìn)入然后執(zhí)行:
java -version
可以看到編譯后的 JDK
默認(rèn)會(huì)帶上編譯的機(jī)器名:
然后我們就可以對(duì)著 JDK
進(jìn)行激情亂搞了(bushi
在 Clion 中調(diào)試
連接到虛擬機(jī)
在 Windows Terminal
或 cmd
中執(zhí)行:
ipconfig
記錄本機(jī) IPv4
地址 xxx.xxx.xxx.xxx
。
在虛擬機(jī) Terminal
中執(zhí)行:
ifconfig
記錄虛擬機(jī)虛擬機(jī)的 ens33:inet
地址 yyy.yyy.yyy.yyy
。
若提示
ifconfig not found
則執(zhí)行sudo apt install net-tools
安裝即可。
然后打開編輯欄的虛擬網(wǎng)絡(luò)編輯服務(wù)器:
選擇NAT
模式連接,進(jìn)入 NAT
設(shè)置,添加:
彈出的映射傳入端口中:
- 主機(jī)端口,默認(rèn)是
22
- 虛擬機(jī)地址填寫
yyy.yyy.yyy.yyy
- 虛擬機(jī)端口,默認(rèn)
22
通過上述步驟,我們就成功將主機(jī) xxx.xxx.xxx.xxx:22
與 虛擬機(jī) yyy.yyy.yyy.yyy:22
映射到了一起。
之后進(jìn)行 ssh
登錄即可連接,若需要繼續(xù)配置免密登錄,可以參考教程:ssh 登錄和 scp 傳輸
Clion 導(dǎo)入項(xiàng)目
建議安裝 JetBrains Gateway
進(jìn)行操作,當(dāng)然你也可以直接使用 Clion
進(jìn)行導(dǎo)入,步驟是一樣滴(
打開 Clion
在遠(yuǎn)程登錄選擇 SSH
進(jìn)行新建項(xiàng)目:
首次連接需要選擇連接的服務(wù)器:
我們新建一個(gè)連接,左上角 +
號(hào)新建配置,之后填入虛擬機(jī)的 ip
以及登錄用戶:
密碼驗(yàn)證方式可以自行選擇,最后測(cè)試連接,連接成功后選擇 Makefile
文件導(dǎo)入,然后連接即可:
由于我安裝了 JetBrains Gateway
,所以最終看起來是醬紫:
到這一步,恭喜你可以開始愉快的玩耍了(xjbg