1、java.net不知为何关闭了openJDK7的源码包的下载页面;使用Mercurial的下载速度又极慢。最后只好在百度网盘上找到了OpenJDK7源码,在优快云上找到了OpenJDK8源码。
2、编译环境搭建:sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant openjdk-8-jdk。
3、其中的libmotif3 需要额外下载,再在该目录下执行“sudo dpkg -i libmotif3_2.3.4-8ubuntu1_amd64.deb” 实现安装。
4、windows10子系统相关配置:
(1)apt-get安装好的文件:文档一般在 /usr/share;可执行文件 /usr/bin;配置文件 /etc;lib文件 /usr/lib。
(2)ubuntu下在vim的基础上安装gvim:“sudo apt-get install vim-gtk”(但是windows10子系统不能用)
(3)win子系统下vimrc配置以后鼠标右键的粘贴功能转移至“shift+鼠标右键”。
(4)win子系统下,/etc/vim/下需要手动添加colors文件夹,该文件夹下有“desert.vim”等颜色配置文件。
(5)如何装上vim插件??https://blog.youkuaiyun.com/gatieme/article/details/43889489
(6)查看Java安装目录的方法:查看JDK版本:java -version;查看java执行路径:which java;查看JAVA_HOME路径:echo $JAVA_HOME;插卡PATH内容:echo $PATH
(7)linux命令行快捷方式:http://blog.51cto.com/cxj632840815/1313260
(8)真实的vim所在的执行目录:“/usr/share/vim/vim74”。语句“call pathogen#infect()”应放在vimrc的最后一行。
(9) linux下可用于计算的指令:https://blog.youkuaiyun.com/linco_gp/article/details/4517945
(10)更换apt-get的源https://blog.youkuaiyun.com/lu900618/article/details/74955065
(11)安装图形化界面https://blog.youkuaiyun.com/u011138447/article/details/78262369
(12)图形界面下取消win键功能http://www.linuxdiyf.com/linux/14517.html
5、首先跳转到openJDK8源代码的解压目录,先执行"./configure",在执行"build.sh"
我所配置的build.sh内容:
#!/bin/bash
# 语言选项,若不设置则会在编译好后出现一个HashTable的NPE错
export LANG=C
# Bootstrap JDK的安装路径
export ALT_BOOTDIR=/usr/lib/jvm/java-8-openjdk-amd64/
#允许自动下载依赖包
export ALLOW_DOWNLOADS=true
# 并行编译线程数,设置为和CPU内核数一样即可
export HOTSPOT_BUILD_JOBS=4
export ALT_PARALLEL_COMPILE_JOBS=4
#使用预编译头文件,以提升便以速度
export USE_PRECOMPILED_HEADER=true
#要编译的内容
export BUILD_LANGTOOLS=true
export BUILD_JAXP=true
export BUILD_JAXWS=true
export BUILD_CORBA=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true
#要编译的版本
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
#避免javaws和浏览器Java插件等的build
BUILD_DEPLOY=false
#不build安装包
BUILD_INSTALL=false
#设置存放编译结果的目录
export ALT_OUTPUTDIR=/mnt/d/Workspaces/compileOpenJDK/openjdk7/build
unset CLASSPATH
unset JAVA_HOME
# 这个环境变量是make sanity建议消除的
unset LD_LIBRARY_PATH
make sanity
make 2>&1 | tee $ALT_OUTPUTDIR/build.log
PS:OpenJDK8可以成功,但OpenJDK7老报错
6、问题处理
-
OS版本不支持
This OS is not supported: Linux 4.4.0-43-Microsoft #1-Microsoft x86_64 x86_64 x86_64 GNU/Linux
解决办法:
修改文件 ./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%
-
参数不兼容
recipe for target 'ad_stuff' failed
解决办法:
修改文件 ./hotspot/make/linux/makefiles/adjust-mflags.sh 删除第67行: s/-\([^][^]*\)j/-\1-j/
7、编译完成后:
进入路径openJdk8/build/build/linux-x86_64-normal-server-release/jdk/bin,执行“./java -version”,给出以下结果:
openjdk version "1.8.0-internal"
OpenJDK Runtime Environment (build 1.8.0-internal-root_2018_08_16_22_14-b00)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)
8、用NetBeans编译HotSpot:http://www.cnblogs.com/zyx1314/p/5638596.html。该页面中的Pre-Build Action “make”