前言
我的另一篇文章:Ubuntu下編譯openjdk8 已經(jīng)編譯了openjdk8的版本浪感,現(xiàn)在需要用到openjdk11的HotspotJVM九巡,所以就編譯一下openjdk11,把不同的部分記錄下來(lái)宠哄,openjdk11的準(zhǔn)備部分就不在贅述了,直接進(jìn)入編譯環(huán)節(jié),需要準(zhǔn)備環(huán)境的看我的編譯openjdk8的文章泉坐,先把需要安裝的工具安裝了。
1.筆者環(huán)境
源碼:openjdk11裳仆,大家可以官網(wǎng)下載腕让,也可以到我的github下載,下載地址
系統(tǒng):Ubuntu19.04
引導(dǎo)jdk:oraclejdk10歧斟,下載地址纯丸,下載后解壓偏形,然后配置環(huán)境變量,可以不配置觉鼻,但有的環(huán)境會(huì)出問(wèn)題俊扭。
2.編譯過(guò)程
編譯openjdk8的時(shí)候是在Ubuntu18.04,openjdk11開(kāi)始也在Ubuntu18.04,但是出錯(cuò)半天沒(méi)有解決了滑凉,所以又在Ubuntu19.04全新的環(huán)境中編譯统扳。
openjdk11,12的編譯需要用到j(luò)re/lib,所以在引導(dǎo)jdk的目錄下創(chuàng)建jre目錄畅姊,然后把lib文件夾拷到j(luò)re目錄咒钟。
2.1配置編譯環(huán)境:
bash ./configure --with-target-bits=64 --with-boot-jdk=/opt/jdk/jdk-11.0.4/ --with-debug-level=slowdebug --with-native-debug-symbols=external --disable-warnings-as-errors
執(zhí)行后出錯(cuò):
就是說(shuō)我的系統(tǒng)環(huán)境沒(méi)有安裝autoconf,sudo apt-get install autoconf 安裝后就可以繼續(xù)了若未,不過(guò)又出了個(gè)錯(cuò):
error:Could not find fontconfig,就是說(shuō)找不到fontconfig朱嘴,安裝就是了,按照打印的錯(cuò)誤提示安裝:sudo apt-get install libfontconfig1-dev,安裝完再重新配置粗合,就可以成功了萍嬉。
2.2開(kāi)始編譯:
make all
編譯出錯(cuò)了:
這個(gè)錯(cuò)是GCC版本過(guò)高導(dǎo)致的,應(yīng)該是一個(gè)jdk的bug,感興趣的可以看下openjdk的bug提交記錄:https://bugs.openjdk.java.net/browse/JDK-8214444
gcc --version查看一下gcc的版本:
確實(shí)有點(diǎn)高隙疚,官方寫的要求GCC版本在4.x到7.x,所以8.3的GCC版本有點(diǎn)高壤追,需要降低一下GCC的版本:
我是把gcc和g++降到gcc/g++6的版本,就可以編譯通過(guò)了
- 下載gcc/g++ 6
sudo apt-get install -y gcc-6
sudo apt-get install -y g++-6
- 鏈接gcc/g++實(shí)現(xiàn)降級(jí)
cd /usr/bin
sudo rm gcc
sudo ln -s gcc-6 gcc
sudo rm g++
sudo ln -s g++-6 g++
再編譯就OK了供屉,可以通過(guò)行冰,不過(guò)有幾個(gè)警告,沒(méi)有太大影響伶丐,我編譯openjdk12沒(méi)有任何警告悼做,很流暢,11就是有編譯的不太流暢哗魂。
每個(gè)人的環(huán)境不一樣肛走,出的問(wèn)題可能也不一樣,有問(wèn)題也歡迎大家留言录别,如果自己Google找不到的話朽色。