IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> wsl下ubuntu20.04配合clion编译openjdk8并运行 -> 正文阅读

[系统运维]wsl下ubuntu20.04配合clion编译openjdk8并运行

起因

最近,看synchronized的锁的底层原理,其中有一个涉及底层C++部分的objectMonitor对象,在进一步了解的过程中,以及之前看深入理解java虚拟机中第一部分,自己编译jdk的触发,开始考虑本地编译jdk,在jdk上进行调试的想法,遂开始网上找文档,我的环境是wsl(ubuntu)+clion.

心路历程

我一开始一直以为这个难点在于wsl的ubuntu毕竟不是原生的,依附于windows,这方面比较新,可能参考资料不多,查找教程也是往wsl编译jdk上靠,遂找到这两个方案,(219条消息) 《深入理解Java虚拟机:JVM高级特性与最佳实践(第三版)》中使用WSL进行JDK编译并在CLion中调试_cy948的博客-CSDN博客
(219条消息) Windows 10 + WSL(ubuntu 20.04) + CLion 编译JDK12_砖头23333的博客-CSDN博客,其实按部就班的按上面来,也未必有问题,不过哎,我就想编译jdk8版本的,没成想,这点坚持开始了后期的精神折磨.

遇到的问题:

jdk8的源码超级不好下,搜索下载jdk8源码,往往两个方案:

第一,官方下载源代码

这个一般通过openjdk官方,里面选择自己想要的版本,点进去是这样的:在这里插入图片描述

这里有个巨坑,从官方下载的,有的是全部源码,相关jar都会下载下来,有的是类似maven版本控制那种,只有个类似pom.xml文件.

第二,直接下载成品:

一方面github上面也有github/openjdk,其实这个也是官方,不过版本标注模式比较迷,其实gitee也有一样的镜像gitee,这个也是,版本标注迷,还有最新更新只到2017年左右,我们知道实际上jdk8一直在维护的.这个版本不是最新的.

可惜我都试过了,这两种都不是太行,注意,是不太行,不是不行.考虑到我的能力,但就已知问题看,小问题太多太多,虽然大部分都有解决方案,但你在修改过程中,明显感受到版本问题很重,有些是修改源码,有些是删除源码.

最终我卡在了提示cc1plus: all warnings being treated as errors,这个意思gcc把警告当作错误处理,解决方案有,但前提要gcc降版本,一方面./config -no-warnings-are-errors这种方式,高版本gcc不生效,添加环境变量我也试了也是没效果,目前了解到可能要降到gcc4开头的版本可能有效果,将版本也是个痛苦的事情,问题还不一定有效果,4.9的我试了不行,目前手里有4.8.2的gcc,还没试,到这一步,基本就搞一天了,主要下jdk是真的恶心,格局小了,一开始出于谨慎,这种非官方来源的代码不是特别敢运行,沙箱啥的又觉得费劲,所以用第一种方案下的源代码,哎,巧了!刚好下的就是那种需要运行类似git的拉去源代码的形式,通过命令hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev/拉取源代码,我以为下下来的就是全部的源码,运行make images命令,死活编译过不去,其实下载的官方文档doc/building.md里面有步骤说明…,害,主要现在遇到问题,还停留在走一步看一步,不行上百度的层次,还没到高手那种系统的方法论,找官方,看源码.好在,以前自己搞事情的经验告诉我,还是要灵活,换个法,我就开始搜编译jdk8,侧重点不放在wsl上了,事实证明这是对的,!!!实战:自己编译JDK | 码农家园 (codenong.com),原本完全按照这个博主的做法做就行了.主要用hg命令下载是真的慢,我想着用github上下载好的,走博主这个模式不就行了…谁知又是坑,版本问题,版本问题,版本问题,重要的事情说三遍,还是会出现上文的问题.

这时我留个后手,昨天用hg下了一天的源码貌似下好了,hg命令下载的时候一定要选择适合自己的版本,这里我20.04的ubuntu,应用进项apt-get update之后,我从官网选择jdk8里面的jdk8u,也可以考虑jdk8u-dev,这两个我看基本上最后更新日期都很新.然后我按照博主的方法完美运行.clion部分参照最上面两个wsl文章即可。

总结:

基于版本考虑,能从官方下就从官方下目标jdk版本下最新版本的源代码(如果自己的操作系统本身比较新的话),下完看下readme文档,里面有要不要用hg命令再次拉取源代码.只要源码本身全且与系统契合,make编译时你会发现及其丝滑,我用官方jdk8最新源码加hg命令拉取源代码,最后make时,一次通过!!!

在这里插入图片描述上图有一处与二者的不同,由于我选择的jdk8u的版本很新,个人推测应该是用再像之前那样,选择jdk7 的版本了,可以直接考虑用自己编译出的java命令.

心得体会:

版本问题依然是工程开发过程中的不可避免的棘手问题,记得我自己上手的第一个大一点的demo项目,作死,改了一个mavenJar包的版本,牵一发动全身,bug不断,自己构建项目整体,整体对于版本控制这方面,还是应该上心些.

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章           查看所有文章
加:2022-04-28 12:14:41  更:2022-04-28 12:18:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:29:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码