Ubuntu14.04編譯openjdk8

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

提示出錯(cuò):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

## 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&nbsp;internal-b00</strong>'
#   -bottom '<font size="-1"><br> Copyright &#x00a9; 2014, 2018, Oracle and/or its affiliates.  All rights reserved.</font><br><strong>DRAFT&nbsp;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'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 由于各Linux開(kāi)發(fā)廠(chǎng)商的不同,因此不同開(kāi)發(fā)廠(chǎng)商的Linux版本操作細(xì)節(jié)也不一樣,今天就來(lái)說(shuō)一下CentOS下JD...
    wildbee58閱讀 773評(píng)論 0 1
  • 由于各Linux開(kāi)發(fā)廠(chǎng)商的不同,因此不同開(kāi)發(fā)廠(chǎng)商的Linux版本操作細(xì)節(jié)也不一樣,今天就來(lái)說(shuō)一下CentOS下JD...
    imbird閱讀 780評(píng)論 0 1
  • 【轉(zhuǎn)】網(wǎng)上代碼參考:http://blog.sina.com.cn/s/blog_6fb54b980100n3pn...
    小可愛(ài)你要快快長(zhǎng)大閱讀 529評(píng)論 0 0
  • 這一向,雨水連連。北方、長(zhǎng)江中下游、閩浙川已出現(xiàn)特大險(xiǎn)情…… 令人擔(dān)心的是:平江也斷斷續(xù)續(xù)在迎接著一輪輪雨...
    天河水響閱讀 630評(píng)論 0 15
  • 說(shuō)上麗齒健牙膏是跟世面上的牙膏有個(gè)不一樣的牙膏,怎么不一樣呢?我們這個(gè)麗齒健牙膏是濃縮產(chǎn)品,一支牙膏可以用八...
    卓越成林愛(ài)編輯閱讀 1,061評(píng)論 0 0

友情鏈接更多精彩內(nèi)容