日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

ubuntu1804源码编译jdk8

發布時間:2023/12/20 Ubuntu 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ubuntu1804源码编译jdk8 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 這里純粹自己弄著玩,因為以前沒有成功過,這里記錄一下,就是讓遇到問題的人可以規避問題,快速編譯自己的jdk。

? ? 相信很多學java的人都看過或者了解過一本書《深入理解java虛擬機》,里面就有介紹如何源碼編譯jdk。而且很多網上的編譯都會將這本書里面的截圖粘出來。

? ? 源碼編譯jdk,需要的環境如下:gcc,make,低版本的jdk,再就是源碼本身了。

? ? 一、準備依賴庫

? ? 所有的準備之前,需要先安裝依賴庫:

sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev zip sudo apt-get install libcups2-dev // gcc g++ sudo apt-get install libasound2-dev sudo apt-get install libfreetype6-dev //freetype font sudo apt-get install libfontconfig1-dev //fontconfig1 font

? ? 這一步如果不做,在進行編譯的時候就各種提示缺少什么,然后提示你sudo apt install xxx,其實不如提前做了。值得一提的是,后面兩個依賴是字體依賴,一個是freetype,一個是fontconfig。?

? ? 二、準備jdk7

? ? 這里需要說明的是,ubuntu1804上已經不能直接通過apt install 安裝openjdk7了,需要自己下載安裝。這里給出一個下載速度很快的網址:https://cdn.azul.com/zulu/bin/zulu7.44.0.11-ca-jdk7.0.292-linux_x64.tar.gz

? ? 這個openjdk7是免安裝版本,解壓之后直接放到一個目錄下(/usr/java)就可以使用了,需要設置環境變量,一般系統的環境變量都在/etc/profile文件和他包含的文件夾/etc/profile.d里面的sh文件,這里可以建立一個單獨的java.sh,如下所示:

huali@huali:~$ cat /etc/profile.d/java.sh export JAVA_HOME=/usr/java/jdk1.7.0 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin export LANG=C

? ?讓配置文件生效,命令行下運行source /etc/profile即可。

? ? jdk7準備好了,可以驗證一下:

huali@huali:~$ java -version openjdk version "1.7.0_292" OpenJDK Runtime Environment (Zulu 7.44.0.11-CA-linux64) (build 1.7.0_292-b07) OpenJDK 64-Bit Server VM (Zulu 7.44.0.11-CA-linux64) (build 24.292-b07, mixed mode)

? ? 三、準備jdk8源碼?

? ? 源碼下載,有的是從oracle官網,有的是從hg上去克隆下載,還有別人給的csdn下載地址,速度堪憂,尤其是csdn給出的各種下載,版本老舊,若要支持內核4以上,還需要改hotspot/make/linux/Makefile里面的一個SUPPORTED_OS_VERSION變量。這里推薦下載碼云上的jdk8u源碼:https://gitee.com/ckl111/openjdk-jdk8u,速度很快,而且不用修改支持內核4的配置。

? ? 四、重新安裝make

? ? 編譯環境,這里主要對于gcc,make的說明,ubuntu1804的make版本好像是4以上,這里有必要換成3.81版本。

? ? 1、下載make源碼:https://ftp.gnu.org/gnu/make/,解壓縮

? ? 2、修改源碼glob/glob.c文件中的代碼,注釋兩行:

? ??

? ? 3、配置、編譯、安裝三步曲?

./configure --prefix=/usr/local/make-3.81 make sudo make install

? ? 最好卸載原來的make: sudo apt remove make,然后替換新的make:sudo cp /usr/local/make-3.81/bin/make /usr/bin/make?

huali@huali:~$ make -v GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.This program built for x86_64-unknown-linux-gnu

? ? 五、重新安裝gcc,g++?

? ? 通過apt install安裝的依賴庫之后,默認的gcc,g++現在是7.3版本,這個最好改為4.8,修改的辦法就是直接apt install安裝gcc-4.8 g++-4.8,然后替換/usr/bin目錄下的gcc,g++。

sudo apt install gcc-4.8 g++-4.8 sudo rm /usr/bin/gcc /usr/bin/g++ sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++

? ?驗證一下:

huali@huali:~$ gcc --version gcc (Ubuntu 4.8.5-4ubuntu8) 4.8.5 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

? ? 六、開始編譯?

? ? 前面所有的準備工作都已經做好了,源碼也準備好,就可以開始配置,編譯:jdk8源碼中的configure并不是一個可執行程序,所以可以這樣來配置:

bash configure

? ? 這一步可能會提示很多錯誤,如果是需要安裝libfreetype6-dev,而且機器上已經安裝了,那是因為freetype安裝之后,并不是以freetype存在,而是freetype2存在,所以需要通過兩個配置選項指定他們的依賴頭文件和依賴庫位置:

bash configure --with-freetype-include=/usr/include/freetype2 --with-freetype-lib=/usr/lib/x86_64-linux-gnu

? ? 沒有報錯,就可以繼續執行make指令了:

sudo make all

? ? ?耗時一般是半小時,我這里虛擬機內存只準備了1G,所以耗時會久一些,加大內存,比如2G,應該就是半小時左右:

? ??

? ? ?編譯會生成兩個images,其實都是jdk,他們存放在images目錄下,還會生成一個單獨的jdk目錄,都在build/linux-x86_64-normal-server-release下。

? ? 主要參考了這篇文章:https://blog.csdn.net/dghgfhk/article/details/103356051,才順利編譯了jdk8,如果你遇到了問題,也可以到這里看看。

? ? 文中的安裝命令apt和apt-get其實都可以使用,就是安裝的意思,早期的ubuntu默認只有apt-get,現在apt,apt-get都可以使用。

總結

以上是生活随笔為你收集整理的ubuntu1804源码编译jdk8的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。