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 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Ubuntu-20.04 编译OpenJDK12记录 -> 正文阅读

[系统运维]Ubuntu-20.04 编译OpenJDK12记录

安装流程

下载OpenJDK12的源码

有两种方法:

  1. 访问官网: https://hg.openjdk.java.net/jdk/jdk12
    点左边栏的zip即可启动下载:
    在这里插入图片描述
    但这种方式慢得令人发指,建议还是用第二种方法。
  2. 访问Github主页:https://github.com/openjdk/jdk/tree/master
    master分支,点tags,往下拖,选中JDK12最新版,最后点Code, DownloadZip即可。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    通过这个方法下载OpenJDK源码最快。

将源码传输到Ubuntu系统里面

我用的是WinSCP,非常好用。
注意Ubuntu20我们装的一般是Desktop桌面版,默认是没有启动SSH服务, 可以通过下面命令安装:

sudo apt-get install openssh-server

安装好后新建一个文件夹,譬如叫jdk12。由于Ubuntu的安全设置问题(账号权限问题),WinSCP还不能传输文件到这个文件夹,需要将文件夹的用户和用户组更改到当前用户(新建文件夹的默认用户和用户组是root,由于Ubuntu独特的设计,你没办法用root账号登陆WinSCP)。

chown james:james /jdk12 #james为我的账号名, /jdk12为新建的文件夹

在这里插入图片描述
现在可以用WinSCP传输文件到jdk12这个文件夹了。

解压文件

cd /jdk12
unzip jdk-jdk-12-33.zip #解压你通过Github下载的压缩文件
mv jdk-jdk-12-33 jdk12-33 #把解压后的文件夹改下名字, 当然不改也没问题
cd jdk12-33 # 进入该文件夹

安装依赖

至少要用到以下依赖:

gcc -v #查看有没有安装gcc
# 没有的话就用命令 sudo apt-get install build-essential 安装
# 下面依赖都会用到,提前安装好
sudo apt-get install autoconf
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
sudo apt-get install libcups2-dev    
sudo apt-get install libfreetype6-dev
sudo apt-get install libasound2-dev  
sudo apt-get install libffi-dev
sudo apt-get install libfontconfig1-dev

安装前置JDK

这个意思是,如果你要编译版本号为N的JDK,那你的Linux系统必需已经安装有较大版本号,或者至少N-1版本号的OpenJDK。譬如要编译JDK12,那你的电脑必须已经至少安装了JDK11。官方称之为Bootstrap JDK。
在Ubuntu中安装OpenJDK11非常简单,只需一个命令:

sudo apt-get install openjdk-11-jdk
java --version #安装完后查看版本号确认

开始编译

进入解压后的源码目录, 输入

bash configure

安静等待依赖检查,期间如果提示缺少依赖,按照要求安装相关依赖即可。
configure后面可以带参数,譬如:
bash configure --enable-debug --with-jvm-variants=server。笔者是取巧,直接使用默认的。
依赖检查通过后输入make all执行整个JDK的编译。如果你用不同参数Configure了几次,那需要带参数CONF来指定用哪一次的。

make all CONF=linux-x86_64-server-fastdebug

编译时遇到的一个关于C文件的错误

我第一次编译时老是遇到一个关于C语言文件的错误,百思不得其解:

=== Output from failing command(s) repeated here ===
......
In function ‘char* strncpy(char*, const char*, size_t)’,
    inlined from ‘static jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs*, bool*, JVMFlag::Flags)’ at 
    ...
    ...  ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
  106 |   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
   ... (rest of output omitted)

我测试了几个版本的JDK都是同样问题,最后才知道原来问题出在我用的gcc版本上。
GCC在8.0之后的版本加入了stringop truncation的验证警告,这里是因为出现了警告导致编译不通过,那就禁止掉警告再进行编译。
查看我的gcc版本:

gcc -v
...
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)

果然如此。禁用警告,从新编译:

bash configure --disable-warnings-as-errors --enable-debug
make all CONF=linux-x86_64-server-fastdebug

大概等了15分钟,成功!
进入/jdk12/jdk12-33/build/linux-x86_64-server-fastdebug/jdk/bin文件夹,输入:

./java --version

查看版本号,确认。
在这里插入图片描述

编译失败注意事项

如果编译失败,记得用命令make cleanmake dist-clean来清理目录,才能确保新的配置生效。

make clean
make dist-clean

两个都要执行,再重新configure。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:51:11  更:2022-04-04 12:51:14 
 
开发: 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 23:31:14-

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