Windows使用WSL编译OpenJDK
-
安装Ubuntu以及配置国内镜像
-
首选确保windows10已经安装了ubuntu
-
更换ubuntu20.04国内镜像,这里我选择的是阿里云镜像
sudo vim /etc/apt/sources.list
-
将使用如下内容替换原先源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal universe
deb http://mirrors.aliyun.com/ubuntu/ focal-updates universe
deb http://mirrors.aliyun.com/ubuntu/ focal multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-security universe
deb http://mirrors.aliyun.com/ubuntu/ focal-security multiverse -
保存退出,然后执行以下命令
sudo apt update
sudo apt upgrade
-
至此,国内镜像已经配置好了。
-
-
由于编译jdk N版本需要JDK N-1版本作为boot版本,我们开始下载和配置jdk11以及环境变量
-
首先执行
sudo apt get install open-11-jdk
-
等待下载好一般默认下载路径
/usr/lib/jvm/java-11-openjdk-amd64
-
开始配置环境变量,输入命令:
sudo vim ~/.bashrc
-
在最下方输入如下:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export CLASSPATH=${JAVA_HOME}/lib
export PATH=\({JAVA_HOME}/bin:\)PATH
-
更新环境变量
source ~/.bashrc
-
-
准备安装gcc7和g++7,我经过测试,gcc4和gcc9都是不行的。
sudo apt install gcc-7 g++-7
-
需要对gcc和g++进行更换软连接
sudo rm -r gcc
sudo rm -r g++
sudo ln -s /usr/bin/gcc-7 gcc
sudo ln -s /usr/bin/g++-7 g++
-
检测gcc和g++版本
gcc -v
g++ -v
-
开始下载jdk12源码,在官网下好之后,在linux中建立一个文件夹,把windows下载好的jdk12源码辅助到WSL中.例如我已经下载到C盘下:
cp /mnt/c/OpenJDK12-master.zip /home/heiye/jdk12_src
-
然后解压
unzip OpenJDK12-master.zip
-
解压完后,进入解压后的目录下,由于环境是WSL环境,以及在编译过程中可能会有警告而被高版本gcc当做错误而停止编译,我们输入:
bash configure --enable-debug --with-jvm-variants=server
-
然后会有一大堆的提示,说缺少很多依赖库,这时候我们需要根据提示来下载这些依赖,例如
sudo apt-get install libfreetype6-dev
sudo apt-get install libcups2-dev
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
sudo apt-get install libasound2-dev
sudo apt-get install libffi-dev
sudo apt-get install autoconf
-
直到出现
-
说明环境已经准备好了,开始编译
male all
-
由于编译时间很长,需要耐心等待
-
当出现如下就代表编译成功
-
进去测试一下:可以看出java版本。