在ubuntu16下编译openJDK11
为什么需要编译自己的jvm源码?
想象下, 你想看看java线程是如何start的?
去源码里一找 native void start0(), 此时如果你对jvm源码比较熟悉, 那么可以下载openJDK源码借助vscode去查询底层实现, 但如果你不知道呢?
又比如 java高并发编程艺术 一书中说final在构造函数return之前会添加一个StoreStore内存屏障,在初次读取前会添加一个LoadLoad内存屏障, 那么您怎么做? (方法也有, 根据反汇编查找到有个关键字JVM_ACC_FINAL在vscode上查找这个关键字会知道一个叫is_final的方法,借助这个方法可以找到)
ubuntu安装openJDK
- 安装方式其实很简单, 输入
sudo apt search openjdk
会看到好多openjdk版本, 找到并复制openjdk-11-jdk
openjdk-11-jdk/focal,now 11.0.7+10-3ubuntu1 amd64 [已安装] OpenJDK Development Kit (JDK)
- 输入
sudo apt install openjdk-11-jdk至此java环境安装完毕 - 输入
java -version验证下自己的java版本吧 - (这句代码可以先不执行)执行命令
sudo apt-get install build-essential准备下等下需要用到的工具
这里其实有个坑, 我们的ubuntu20默认安装gcc版本过高了, 参考编译文档发现需要低于gcc7.4版本一下
下载openJDK源码编译
下载openJDK
- 访问网址 openJDK所有版本都有
下载自己想要的openJDK源码
完毕之后通过ftp上传到我们的ubuntu
编译openJDK
- 使用
unzip -q openjdk-11+28_src.zip解压出源码 cd openjdk- 执行
bash configure --enable-debug --with-jvm-variants=server(这里我们使用的是默认64bit和fastdebug方式编译jvm)
更多参数可以参考我从java高并发编程艺术复制的图片
执行上面那段shell指令后会发现错误, 不要怕看其中这句话:
You might be able to fix this by running 'sudo apt-get install autoconf'.
(1) 把sudo apt-get install autoconf -y复制出来在shell上执行下
等待安装完毕, 继续使用
sudo bash configure --enable-debug --with-jvm-variants=server不断的测试
中途可能还会错误几次, 没关系继续copy
比如我又遇到了这个错误
看到红框框了指令了么?? 继续复制粘贴 entry
(2) sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev
__ 你们看到的错误可能不一样不要复制我的(都到自己编译jvm的程度了,这点基本功你要会,我就不详述了) __
(3) sudo apt-get install libcups2-dev 有遇到了,执行下, 回去继续做检测指令
(4) sudo apt-get install libfontconfig1-dev
(5) sudo apt-get install libasound2-dev
接着我发现全程正常编译完毕...
那么我们可以正式开始编译jvm了
make images -j 4 开始正式编译, 最终会在终端中看到
或者
都代表编译成功
这里笔者一边看电视剧一边编译的, 没注意到已经编译完成, 认为编译失败, 又
make images编译了一回, 不过没关系, 第二次编译没有clean掉已经编译好的jdk, 所以速度很快
对了编译期间会遇到, 无视就好
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
至此我们编译完成...
在ubuntu16下编译openJDK11的更多相关文章
- Ubuntu16下编译linux内核,报"mkimage" command not found错的解决
"mkimage" command not found - U-Boot images will not be built /work/system/linux-3.4.20/ar ...
- Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python)
Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python) 前提是已经安装了python2,python3 1)安装各种依赖库 sudo apt-get update ...
- ubuntu16.04下编译安装vim8.1
之前写过一篇centos7下编译安装vim8.0的教程,ubuntu16.04相比centos7下安装过程不同在于依赖包名字的不同,其余都是一样.下面给出ubuntu16.04编译安装vim8.0需要 ...
- Ubuntu16.04下编译OpenCV2.4.13静态库(.a文件)
Ubuntu16.04下编译OpenCV2.4.13静态库(.a文件) https://blog.csdn.net/woainishifu/article/details/79712110 我们在做项 ...
- ubuntu下编译caffe
Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...
- Ubuntu16.04编译安装php
#Ubuntu16.04编译安装php Ubuntu16.04上面搭建基于Nginx的php服务.Nginx使用apt直接安装的. sudo apt install nginx php的安装部署步骤主 ...
- 在Ubuntu下编译Qt错误及处理办法
平台:Ubuntu16.04 64bit 虚拟机:VirtualBOX 编译软件:Qt 32bit (在64位环境下编译32bit的程序会出现很多错误,从编译器的安装以及整个库的编译) 问题一:er ...
- ubuntu16下用QT5实现对话框应用
ubuntu16下用QT5,实现对话框程序,步骤:生成界面Dialog.ui,将它应用到主程序,通过主程序显示. 一 界面练习 1 Dialog.ui界面生成 在命令行输入:designer 进入界面 ...
- 01.ubuntu16.06编译安装Hi3518EV200 SDK
转载,侵删 HI3518EV200 SDK安装并编译osdr. 1.开发环境 windows10电脑 + 虚拟机14 Pro + Ubuntu16.0.4 2.拷贝并解压.将 Hi3518E_SDK_ ...
随机推荐
- Maven知识点一览
Maven 介绍和搭建 介绍 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告,和文档的软件项目管理工具. 环境搭建 网址:https://maven.apache ...
- DOCKER学习_016:Docker镜像仓库和HARBOR的简单安装和管理
一 镜像仓库介绍 1.1 简介 镜像仓库用于存放 Docker镜像 Docker registry提供镜像仓库服务 一个 Docker registry可以包含多个镜像仓库 仓库分为公共镜像仓库与私有 ...
- [论文阅读笔记] Are Meta-Paths Necessary, Revisiting Heterogeneous Graph Embeddings
[论文阅读笔记] Are Meta-Paths Necessary? Revisiting Heterogeneous Graph Embeddings 本文结构 解决问题 主要贡献 算法原理 参考文 ...
- Java必会之多线程
一.线程的基本知识 1.1 线程知识 进程和线程的关系和区别 线程: 线程是进程的基本执行单元,进程想要执行任务,必须要有线程.程序启动默认开启一条线程,这个线程被称为主线程. 进程: 进程是指在系统 ...
- Vue的常用特性
Vue的常用特性 一.表单基本操作 都是通过v-model 单选框 1. 两个单选框需要同时通过v-model 双向绑定 一个值 2. 每一个单选框必须要有value属性 且value值不能一样 3. ...
- Go语言web开发---Beego的cookie
1.简介 (1)Http是无状态的协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否是同一个客户端,这样的设计严重阻碍了web程序的设计. (2)Cookie是解决Http协议无 ...
- GO语言复合类型01---指针
package main /* %T 类型占位符 %v 值占位符 %p 地址(指针)占位符,只有地址才能替换%p &value 对值取地址 *addr 对地址取值 **int 指向int型指针 ...
- 永远的Ace 团队作业4—团队项目需求建模与系统设计(1)
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu-da ...
- Camera Lens Coating
Camera Lens Coating Coating Progress 转换镜头,根据要求进行OEM和设计. 光学元件:望远镜.显微镜.相机和数码相机镜头.放大镜头和远摄镜头.定心镜头.投影镜头.投 ...
- APA自动泊车系统
APA自动泊车系统 1. 半自动泊车 自动泊车又称为自动泊车入位,它对于新手来说是一项相当便捷的配置,对于老手来说也省了些不少力气.那么自动泊车的原理是什么呢?能想怎么停就怎么停,想停哪儿就停哪儿吗? ...