深入理解java虚拟机1--Linux上构建OpenJDK

前言:跟着《深入理解Java虚拟机》学习java虚拟机,之前有几次尝试开始,但总是以失败告终。所以这次以记录的形式来学习java虚拟机,希望自己在这本书学完能有所收获和成长,欢迎和大家一起共同进步,如果文章中有不对的地方,欢迎指出。

世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过 程。

1.Linux上构建OpenJDK(相关资源下载可参考书籍)

(1)环境在本地电脑安装一个VMware,下载了一个Ubuntu的镜像,新建虚拟机,参考链接

(2)在安装Ubuntu会有两种模式:界面模式和命令模式,一般我采用命令模式来进行操作 (坑:在进入命令模式时,在输入用户名和密码时,需要关闭NumLock,我在输入密码开启了NumLock输入密码后提示Incorrect Login. 原因:Ubuntu不认小键盘,使用字母键盘上面的数字按键进行输入)

(3)为了方便使用ubuntu,使用了Xshell来连接。具体步骤如下:

1. 进入命令模式,在终端输入:sudo apt install openssh-server(下载远程服务器)

2. 在执行 sudo apt install net-tools(解决不能联网问题)

3.ifconfig 可以查看ip地址 使用 xsell连接

深入理解java虚拟机1--Linux上构建OpenJDK_第1张图片

(4)构建编译环境:

1.在Ubuntu系统上安装GCC的命令 为

sudo apt-get install build-essential

2.openjdk 编译的依赖库

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

深入理解java虚拟机1--Linux上构建OpenJDK_第2张图片

 3.在Ubuntu中使用以下命令安装OpenJDK 11:

sudo apt-get install openjdk-11-jdk

假设要编译大版本号为N的JDK,我们还要另外准备一个大版本号至少为N-1的、已经编译 好的JDK.因为OpenJDK由多个部分(HotSpot、JDK类库、JAXWS、JAXP……)构成,其中一 部分(HotSpot)代码使用C、C++编写,而更多的代码则是使用Java语言来实现,因此编译这些Java代 码就需要用到另一个编译期可用的JDK,官方称这个JDK为“Bootstrap JDK” 。(目前也不是很清楚这句话的 意思。)

4.进入安装openJdk的目录下,输入一下命令:(编译FastDebug版、仅含Server模式的HotSpot虚拟机)

bash configure --enable-debug --with-jvm-variants=server

但是我的没有编译成功,报的是:(configure命令承担了依赖项检查、参数配置和构建输出目录结构等多项职责,如果编译过程中需 要的工具链或者依赖项有缺失,命令执行后将会得到明确的提示,并且给出该依赖的安装命令)深入理解java虚拟机1--Linux上构建OpenJDK_第3张图片

configure: error: Could not find fontconfig! You might be able to fix this by running 'sudo apt-get install libfontconfig1-dev'.
configure exiting with result code 1

 根据提示是有工具缺失,所以安装:

sudo apt-get install libfontconfig1-dev

再次执行则编译成功,并且输出调试级别,Java虚拟机的模式、特性, 使用的编译器版本等配置摘要信息,在编译成功后会在build目录下出现一个文件夹

深入理解java虚拟机1--Linux上构建OpenJDK_第4张图片

深入理解java虚拟机1--Linux上构建OpenJDK_第5张图片

2.在IDE工具中进行源码调试

1. 下载工具CLion

总结:今天主要是在配置环境,下载环境。但是在这个过程中也会有许多坑,是需要注意的。

你可能感兴趣的:(深入理解java虚拟机,java,开发语言,ubuntu)