所需资源链接汇总
安装JDK8
要想编译jdk,首先电脑本身要有一个jdk环境,所以我们需要先安装oracle的jdk8
1. 下载jdk8
解压到/usr/local/lib/目录下
sudo tar -zxvf jdk-8u351-linux-x64.tar.gz -C /usr/local/lib/
2. 配置环境变量
- 在/etc/profile.d/文件夹下创建并编辑myprofile.sh文件
sudo gedit /etc/profile.d/myprofile.sh
- 在文本中输入以下内容
#!/bin/sh
#set oracle jdk environment
export JAVA_HOME=/usr/local/lib/jdk1.8.0_351
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
- 使myprofile.sh文件生效
source /etc/profile.d/myprofile.sh
3. 验证jdk是否安装成功
java -version
出现以下提示,说明安装成功
安装gcc4.9和g++4.9
1. 添加源
sudo bash -c 'echo "deb http://dk.archive.ubuntu.com/ubuntu/ xenial main" >> /etc/apt/sources.list'
sudo bash -c 'echo "deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe" >> /etc/apt/sources.list'
sudo apt update
2. 安装
sudo apt-get install -y gcc-4.9
sudo apt-get install -y g++-4.9
3. 切换gcc版本
手动配置gcc-4.9和g+±4.9的优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 50
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
4. 验证gcc版本
gcc -v
注意:再次使用 sudo apt update
命令会导致gcc和g++的版本升高,是所以暂时不要使用,因为高版本的gcc和g++会导致编译openjdk时报错
安装make3.8.1
1. 下载make3.8.1
解压文件
sudo tar -zxvf make-3.81.tar.gz
进入make-3.81文件夹,注意之后的操作全部在此文件夹进行
cd make-3.81/
2. 修改配置
sudo gedit glob/glob.c
修改glob/glob.c文件, 注释掉这两行 (不修改会报错)
注释掉第210行和第231行代码
3.编译安装
一会要用到make命令,所以要确保已经有一个高版本make
sudo apt install make
编译
./configure --prefix=/usr/local/make-3.81
sudo make install
4. 配置make3.81到环境变量
编辑环境变量文件
sudo gedit /etc/profile.d/myprofile.sh
把以下内容加入文本末尾
export PATH=/usr/local/make-3.81/bin:$PATH
使myprofile.sh生效
source /etc/profile.d/myprofile.sh
编译jdk
1. 下载jdk源码
解压文件
unzip openjdk-8u41-src-b04-14_jan_2020.zip
2. 修改配置文件
- 进入解压后的文件夹目录,注意之后的操作全部在此文件夹进行
cd openjdk/
- 修改hotspot/make/linux/Makefile文件的第232行代码
gedit hotspot/make/linux/Makefile
SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4% 5%
- 修改hotspot/make/linux/makefiles/gcc.make文件的第208行代码
gedit hotspot/make/linux/makefiles/gcc.make
WARNINGS_ARE_ERRORS = -Wno-all
- 安装编译所需的依赖
sudo apt-get install -y libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfreetype6-dev libasound2-dev
- 修改configure文件权限
chmod +x configure
- 编译
./configure
make all
此过程时间很长,慢慢等吧
openjdk8的目录结构
jdk目录:openjdk/build/linux-x86_64-normal-server-release/images/j2sdk-image
jre目录:openjdk/build/linux-x86_64-normal-server-release/images/j2re-image
源码目录:openjdk/jdk/src/share/classes
将来更改源码目录的java文件后,需要使用在openjdk目录下使用make images
命令重新编译才可生效