1、安裝相關(guān)依賴(lài)
#安裝aptitude(在處理依賴(lài)問(wèn)題上更佳。aptitude 在刪除一個(gè)包時(shí),會(huì)同時(shí)刪除本身所依賴(lài)的包)
sudo apt-get install aptitude
#更新源信息
sudo aptitude update
#安裝編譯openjdk8所需依賴(lài)
sudo aptitude install build-essential libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfreetype6-dev libasound2-dev ccache
在此之所以使用aptitude,而不用apt-get方式安裝依賴(lài)項(xiàng),是因?yàn)橛胊pt-get方式安裝老是提示以下錯(cuò)誤:
下列軟件包有未滿(mǎn)足的依賴(lài)關(guān)系:
build-essential : 依賴(lài): dpkg-dev (>= 1.13.5) 但是它將不會(huì)被安裝
libcups2-dev : 依賴(lài): libgnutls-dev 但是它將不會(huì)被安裝
依賴(lài): libkrb5-dev 但是它將不會(huì)被安裝
libfreetype6-dev : 依賴(lài): zlib1g-dev 但是它將不會(huì)被安裝 或
libz-dev
依賴(lài): libpng-dev
xorg-dev : 依賴(lài): libfontenc-dev 但是它將不會(huì)被安裝
依賴(lài): libxfont-dev 但是它將不會(huì)被安裝
依賴(lài): libxft-dev 但是它將不會(huì)被安裝
依賴(lài): libxrandr-dev 但是它將不會(huì)被安裝
依賴(lài): xserver-xorg-dev
E: 無(wú)法修正錯(cuò)誤,因?yàn)槟竽承┸浖3脂F(xiàn)狀,就是它們破壞了軟件包間的依賴(lài)關(guān)系。
2、下載安裝OpenJDK8源碼
我是下載的別人提供的openjdk8源碼,是個(gè)7z壓縮文件openjdk-8u40-src-b25-10_feb_2015.7z,解壓命令:
# -r 表示遞歸解壓 -o表示解壓位置,注意-o后沒(méi)有空格
7z x openjdk-8u40-src-b25-10_feb_2015.7z -r -o/home/
3、下載Bootstrap JDK
一般選擇落后一個(gè)大版本的JDK作為Bootstrap JDK.這里安裝了OpenJDK 7.
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
安裝完成之后請(qǐng)確認(rèn)一下現(xiàn)在環(huán)境中的JAVA版本
root@ethan:/home/openjdk# java -version
java version "1.7.0_181"
OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.2)
OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)
4、配置、編譯OpenJDK 8
4.1 配置
sh ./configure
如果出現(xiàn)以下提示,說(shuō)明配置成功:
====================================================
A new configuration has been successfully created in
/home/openjdk/build/linux-x86_64-normal-server-release
using default settings.
Configuration summary:
* Debug level: release
* JDK variant: normal
* JVM variants: server
* OpenJDK target: OS: linux, CPU architecture: x86, address length: 64
Tools summary:
* Boot JDK: java version "1.7.0_181" OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.2) OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode) (at /usr/lib/jvm/java-7-openjdk-amd64)
* C Compiler: gcc-4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.4) version 4.8.4 (at /usr/bin/gcc-4.8)
* C++ Compiler: g++-4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.4) version 4.8.4 (at /usr/bin/g++-4.8)
Build performance summary:
* Cores to use: 4
* Memory limit: 7885 MB
* ccache status: installed and in use
4.2 編譯
make all
## Starting hotspot
make[2]: warning: -jN forced in submake: disabling jobserver mode.
INFO: ENABLE_FULL_DEBUG_SYMBOLS=1
INFO: ALT_OBJCOPY=/usr/bin/objcopy
INFO: /usr/bin/objcopy cmd found so will create .debuginfo files.
INFO: STRIP_POLICY=min_strip
INFO: ZIP_DEBUGINFO_FILES=1
INFO: ENABLE_FULL_DEBUG_SYMBOLS=1
INFO: ALT_OBJCOPY=/usr/bin/objcopy
INFO: /usr/bin/objcopy cmd found so will create .debuginfo files.
INFO: STRIP_POLICY=min_strip
INFO: ZIP_DEBUGINFO_FILES=1
INFO: ENABLE_FULL_DEBUG_SYMBOLS=1
INFO: ALT_OBJCOPY=/usr/bin/objcopy
INFO: /usr/bin/objcopy cmd found so will create .debuginfo files.
INFO: STRIP_POLICY=min_strip
INFO: ZIP_DEBUGINFO_FILES=1
*** This OS is not supported: Linux ethan 4.4.0-133-generic #159~14.04.1-Ubuntu SMP Fri Aug 10 08:17:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
make[5]: *** [check_os_version] 錯(cuò)誤 1
make[4]: *** [linux_amd64_compiler2/debug] 錯(cuò)誤 2
make[3]: *** [generic_build2] 錯(cuò)誤 2
make[2]: *** [product] 錯(cuò)誤 2
make[1]: *** [/home/openjdk/build/linux-x86_64-normal-server-release/hotspot/_hotspot.timestamp] 錯(cuò)誤 2
修改文件 ./hotspot/make/linux/Makefile
修改 SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 2.7% 為
SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 2.7% 3% 4%
編譯成功提示:
# ...
# -encoding 'ascii'
# -nodeprecatedlist
# -doctitle 'jdk.net API'
# -windowtitle 'jdk.net API b00'
# -header '<strong>jdk.net API</strong><br><strong>DRAFT internal-b00</strong>'
# -bottom '<font size="-1"><br> Copyright © 2014, 2018, Oracle and/or its affiliates. All rights reserved.</font><br><strong>DRAFT internal-b00</strong>'
# -linkoffline '../../../../../api' '/home/openjdk/build/linux-x86_64-normal-server-release/docs/api/'
# Packages (jdknet.packages):
# jdk.net
## Finished docs (build time 00:03:32)
----- Build times -------
Start 2018-09-10 01:03:18
End 2018-09-10 01:34:22
00:00:47 corba
00:00:35 demos
00:03:32 docs
00:19:18 hotspot
00:00:48 images
00:00:27 jaxp
00:00:34 jaxws
00:04:35 jdk
00:00:00 langtools
00:00:28 nashorn
00:31:04 TOTAL
-------------------------
Finished building OpenJDK for target 'all'