当前位置: 首页 > news >正文

在 Linux (aarch64) 编译 OpenJDK 8

环境信息

  • 操作系统:Rocky Linux 9.4 (aarch64)
  • Open JDK:OpenJDK 8u422
  • Boot JDK:jdk8u421-linux-aarch64

编译 OpenJDK 需要有一个 JDK。

解压后当前目录结构如下:

/opt/
├── jdk1.8.0_421
│   ├── COPYRIGHT
│   ├── LICENSE
│   ├── README.html
│   ├── THIRDPARTYLICENSEREADME.txt
│   ├── bin
│   ├── include
│   ├── jre
│   ├── legal
│   ├── lib
│   ├── man
│   ├── release
│   └── src.zip
└── jdk8u422-b05├── ASSEMBLY_EXCEPTION├── LICENSE├── Makefile├── README.md├── THIRD_PARTY_README├── common├── configure├── corba├── doc├── hotspot├── jaxp├── jaxws├── jdk├── langtools├── make├── nashorn└── test

进入 jdk8u422-b05 目录。

构建

一、运行 configure,配置编译环境

bash configure --with-boot-jdk=../jdk1.8.0_421

由于本机是 minimal 安装的,需要安装以下依赖:

yum install -y zip unzip make gcc libXtst-devel libXt-devel libXrender-devel cups-devel freetype-devel alsa-lib-devel fontconfig-devel g++

如果缺少依赖项而失败,按照提示安装后再次运行。

配置完成后,会输出以下信息:

A new configuration has been successfully created in
/opt/jdk8u422-b05/build/linux-aarch64-normal-server-release
using configure arguments '--with-boot-jdk=../jdk1.8.0_421Configuration summary:
* Debug level:    release
* JDK variant:    normal
* JVM variants:   server
* OpenJDK target: OS: linux, CPU architecture: aarch64, address length: 64Tools summary:
* Boot JDK:       java version "1.8.0_421" Java(TM) SE Runtime Environment (build 1.8.0_421-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)  (at /opt/jdk1.8.0_421)
* Toolchain:      gcc (GNU Compiler Collection)
* C Compiler:     Version 11.4.1 (at /usr/bin/gcc)
* C++ Compiler:   Version 11.4.1 (at /usr/bin/g++)Build performance summary:
* Cores to use:   1
* Memory limit:   1639 MB

二、编译 OpenJDK

make images

OpenJDK 8 不支持 --disable-warnings-as-errors,会将所有 warning 视为 error 从而停止编译。需要将 ./hotspot/make/linux/makefiles/gcc.makeWARNINGS_ARE_ERRORS = -Werror 注释掉。

编译完成后,输出以下信息:

----- Build times -------
Start 2024-09-21 22:56:18
End   2024-09-21 23:08:59
00:00:18 corba
00:00:24 demos
00:07:32 hotspot
00:00:24 images
00:00:10 jaxp
00:00:16 jaxws
00:03:12 jdk
00:00:18 langtools
00:00:07 nashorn
00:12:41 TOTAL
-------------------------
Finished building OpenJDK for target 'images'

编译成功后的 JDK 和 JRE 会在 ./build/linux-aarch64-normal-server-release 目录下的 j2re-imagej2sdk-image

三、验证结果

./build/linux-aarch64-normal-server-release/images/j2sdk-image/bin/java -version

编译成功,输出以下信息:

openjdk version "1.8.0_422-internal"
OpenJDK Runtime Environment (build 1.8.0_422-internal-root_2024_09_21_22_56-b00)
OpenJDK 64-Bit Server VM (build 25.422-b00, mixed mode)

参考资料

  • jdk/doc/building.md
http://www.lryc.cn/news/443319.html

相关文章:

  • 如何有效检测住宅IP真伪?
  • springboot acuturator
  • 什么是SaaS软件?有哪些常用的SaaS软件?
  • QT Layout布局,隐藏其中的某些部件后,不影响原来的布局
  • WPF自定义Dialog模板,内容用不同的Page填充
  • [数据集][目标检测]智慧养殖场肉鸡健康状态检测数据集VOC+YOLO格式4657张2类别
  • Linux 应用安全
  • 优化内存工具 | RAM Saver Pro v24.9 便携版
  • 后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)
  • 众数信科AI智能体政务服务解决方案——寻知智能笔录系统
  • OpenCV特征检测(4)检测图像中的角点函数cornerHarris()的使用
  • Apache Doris 2.1.6 版本正式发布
  • 一些常用的 Docker 命令
  • 【机器学习】--- 自然语言推理(NLI)
  • 大话C++:第11篇 类的定义与封装
  • 六种主流ETL工具的比较与Kettle的实践练习指南--MySQL、hive、hdfs等之间的数据迁移
  • 一天一道算法题day07
  • 电机学习-有感BLDC开环控制(六步换相)
  • 《深度学习》PyTorch框架 优化器、激活函数讲解
  • Linux:进程(四)
  • CTC loss 博客转载
  • TryHackMe 第3天 | Pre Security (中)
  • c语言中“qsort函数”和“结构体成员访问变量”
  • 【MySQL】在MySQL中STR_TO_DATE()
  • PCIE集成验证(五)MSI/MSI-X中断
  • leetcode 380.O(1) 时间插入、删除和获取随机元素
  • 基于MicroPython的ESP8266控制PS2摇杆模块的设计方案
  • Spring Boot 3项目使用Swagger3教程
  • linux-系统备份与恢复-系统恢复
  • 【Rust语言】std::collections::HashMap用法