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

macOS sonoma 14.4.1编译JDK 12

macOS sonoma 14.4.1编译JDK 12

  • 环境
  • 参考文档
  • 开始
    • 简述问题
    • 心路历程
    • 着手解决
    • 最终解决(前面有点啰嗦了,可以直接看这里)

记录一次靠自己看代码解决问题的经历(总之就是非常开心)。

首先,先diss一下bing,我差一点就放弃了。
在这里插入图片描述

环境

  • macOS sonoma 14.4.1
  • Boot JDK 11
  • Xcode 15.3

参考文档

openJdk 源码中building文件(路径如下: /doc/building)

开始

简述问题

不整虚的,先放上我自己碰到的问题。

configure: The tested number of bits in the target (64) differs from the number of bits expected to be found in the target (32)

简单来说,就是期望构建64版本的JDK,但是我的机器是32位,未通过校验。

心路历程

给我整不自信了,被某东坑了?我靠,这会可是已经过了质保时间了啊(哭)。赶紧自查,还好是64位(虚惊一场)。

# 自查指令,我的机器上返回 "arm64"
uname -m

于是开始上网冲浪,先是问的Bing,什么手把手教学啊的文章映入眼帘,但是扫了几眼,人家没碰到我的问题,而且很顺利。没辙,问问chatGpt,给了我一个配置参数(我去指令都让我自己背下来了) : --with-target-bits=64。试了之后仍然没什么用,再问也没了结果。只好再去问Bing,并且提供了更详细的描述,结果告诉我Open JDK不能在ARM上运行。扭头去问gpt,结果如下(还是gpt牛):
在这里插入图片描述
询问到此为止(我已经不知道该怎么组织提示词了)。

看看终端执行编译指令给出的错误信息,发现有这么个东东(这好像是个脚本啊)。

/jdk12-06222165c35f/build/.configure-support/generated-configure.sh: line 84: 5: Bad file descriptor

着手解决

  1. 找到提示信息所在行数(搜索关键字: The tested number of bits in the target),比对错误信息。
    结论:“OPENJDK_TARGET_CPU_BITS” 这个参数为 32,
  2. 猜测,该脚本会根据机器信息,为该参数赋不同的值。根据关键字(OPENJDK_TARGET_CPU_BITS)检索,寻找跟该参数赋值逻辑有关的内容(OPENJDK_TARGET_CPU_BITS -> VAR_CPU_ARCH -> host_cpu),并打印在终端。
  3. 发现代码中,对于mac系统的赋值只存在于一处,因为自己比较懒且对sh的语法不熟,便做了最简单的修改(见最后)。

步骤二扩展:

# 1、找出OPENJDK_TARGET_CPU_BITS赋值的位置(共2处)
# 1.1 不符合
if test "x$with_target_bits" = x32 && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then# A reduced build is requestedCOMPILE_TYPE="reduced"OPENJDK_TARGET_CPU_BITS=32if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; thenOPENJDK_TARGET_CPU=x86elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; thenOPENJDK_TARGET_CPU=sparcelseas_fn_error $? "Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9" "$LINENO" 5fi# 1.2 看不懂不确定,但是也只剩这一处了
# ... and setup our own variables. (Do this explicitly to facilitate searching)OPENJDK_TARGET_OS="$VAR_OS"if test "x$VAR_OS_TYPE" != x; thenOPENJDK_TARGET_OS_TYPE="$VAR_OS_TYPE"elseOPENJDK_TARGET_OS_TYPE="$VAR_OS"fiif test "x$VAR_OS_ENV" != x; thenOPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"elseOPENJDK_TARGET_OS_ENV="$VAR_OS"fiOPENJDK_TARGET_CPU="$VAR_CPU"OPENJDK_TARGET_CPU_ARCH="$VAR_CPU_ARCH"OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"# 2、找出VAR_CPU_BITS赋值的位置(就是这里了,所以但凡是arm架构的,都被当成了32位机器(淦..)。)case "$host_cpu" in....arm*)VAR_CPU=armVAR_CPU_ARCH=armVAR_CPU_BITS=32VAR_CPU_ENDIAN=little;;....esac

最终解决(前面有点啰嗦了,可以直接看这里)

将VAR_CPU_BITS改成64即可。

case "$host_cpu" in....arm*)VAR_CPU=armVAR_CPU_ARCH=armVAR_CPU_BITS=32VAR_CPU_ENDIAN=little;;....esac

相关文章:

macOS sonoma 14.4.1编译JDK 12

macOS sonoma 14.4.1编译JDK 12 环境参考文档开始简述问题心路历程着手解决最终解决(前面有点啰嗦了,可以直接看这里) 记录一次靠自己看代码解决问题的经历(总之就是非常开心)。 首先,先diss一下bing,我差一点就放弃了。 环境 macOS sonom…...

GPU通用计算介绍

谈到 GPU (Graphics Processing Unit,图形显示卡)大多数人想到的是游戏、图形渲染等这些词汇,图形处理确实是 GPU 的一大应用场景。然而人们也早已关注到它在通用计算上的巨大潜力,并提出了 GPGPU (General-purpose co…...

如果数据给的是树形 转好的树形结构并且是有两个二级children的话 该如何写?

第一我们要自己写一个children 并且张数据里面的所要渲染的二级进行赋值 赋给我们新建的children 以下是代码转树形赋值 organ().then(function (res) {console.log(res); // 成功回调// setLists(res.data.data)res.data.data res.data.data.map((obj) > ({...obj, // …...

C++ 函数重载

两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器会根据实参的类型机个数的最佳来自动调用哪一个函数。 一 带默认形参值的函数 在定义函数时预先声明默认的形参值。调用时如果给出实参,则用实参初始化形…...

5. 分布式链路追踪TracingFilter改造增强设计

前言 在4. 分布式链路追踪客户端工具包Starter设计一文中,我们实现了基础的Starter包,里面提供了我们自己定义的Servlet过滤器和RestTemplate拦截器,其中Servlet过滤器叫做HoneyTracingFilter,仅提供了提取SpanContext&#xff0…...

C++数据类型与表达式

一 C中的数据类型 二 基本数据类型 三 类型转换 各种类型的高低顺序如下所述; 四 构造数据类型 类类型...

电脑ip地址设置成什么比较好

随着信息技术的快速发展,IP地址已成为电脑在网络世界中的“身份证”。它不仅是电脑在网络中进行通信的基础,也直接关系到网络连接的稳定性、安全性和效率。然而,面对众多IP地址设置选项,许多用户可能会感到困惑。那么,…...

vue-element-template优化升级dart-sass、pnpm

1、替换 node-sass 为 dart-sass - "node-sass": "^4.9.0","sass": "^1.75.0",替换css深度作用域写法 /deep/ >>># 替换为::v-deepVue:Node Sass VS. Dart Sass 2、替换npm为pnpm,需要补充一些依赖…...

Oracle拼接json字符串

在Oracle数据库中,并没有内建的JSON处理函数像其他现代数据库那样直接。但是,你可以使用字符串连接和格式化技巧来拼接JSON字符串。 以下是一个简单的例子,说明如何在Oracle中拼接一个JSON字符串: sql DECLARE v_json_string V…...

如何向Linux内核提交开源补丁?

2021年,我曾经在openEuler社区上看到一项改进Linux内核工具的需求,因此参与过Linux内核社区的开源贡献。贡献开源社区的流程都可以在内核社区文档中找到,但是,单独学习需要一个较长的过程,新手难以入门,因此…...

python数据分析——pandas DataFrame基础知识2

参考资料:活用pandas库 1、分组方式 我们可以把分组计算看作“分割-应用-组合”(split-apply-combine)的过程。首先把数据分割成若干部分,然后把选择的函数(或计算)应用于各部分,最后把所有独立…...

TODESK远程开机的原理

在现代计算机技术飞速发展的背景下,远程控制软件成为我们日常工作中不可或缺的工具。其中,ToDesk作为一款高效且易用的远程控制软件,备受用户青睐。那么,ToDesk远程开机的原理是什么呢?本文将为你揭晓这个秘密。 KKVie…...

【c1】数据类型,运算符/循环,数组/指针,结构体,main参数,static/extern,typedef

文章目录 1.数据类型:编译器(compiler)与解释器(interpreter),中文里的汉字和标点符号是两个字节,不能算一个字符(单引号)2.运算符/循环:sizeof/size_t3.数组…...

word图片水印

一、word中旧水印如何删除 打开word模板,想要删除旧水印,如下图所示操作,但是旧水印删除不掉。 以为上传新水印图片会替换掉旧水印,结果显示了2个水印,要怎么删除呢? 如下截图所示,双击打开页…...

kali安装及替换源

一、安装及简单配置 1.安装:地址就不贴了,自己打一下就好 2.虚拟机中打开kali 3.替换包源 (1)使用指令打开/etc/apt/sources.list mousepad /etc/apt/sources.list (2)将内容替换成阿里云源 deb http://mirrors.aliyun.com/kali kali-rolling main n…...

JSpdf,前端下载大量表格数据pdf文件,不创建dom

数据量太大使用dom》canvas》image》pdf.addimage方法弊端是canvas超出 浏览器承受像素会图片损害,只能将其切割转成小块的canvas,每一次调用html2canvas等待时间都很长累积时间更长,虽然最终可以做到抽取最小dom节点转canvas拼接数据,但是死…...

PHP关联数组[区别,组成,取值,遍历,函数]

关联数组 相较于数值数组&#xff0c;关联数组的索引可以为字符串和数字&#xff0c;关联数组元素也可称为键值对&#xff0c;索引为键&#xff0c;值为值。 源码 <?php echo "<hr>"; //水平线标签//关联数组$arr3 array(); //创建空的数组//关联数…...

JavaWeb--13Mybatis(2)

Mybatis&#xff08;2&#xff09; 1 Mybatis基础操作1.1 需求和准备工作1.2 删除员工日志输入参数占位符 1.3 新增员工1.4 修改员工信息1.5 查询员工1.5.1 根据ID查询数据封装 1.5.3 条件查询 2 XML配置文件规范3 MyBatis动态SQL3.1 什么是动态SQL3.2 动态SQL-if更新员工 3.3 …...

如何远程控制另一部手机:远程控制使用方法

在现今高科技的社会中&#xff0c;远程控制手机的需求在某些情境下变得越来越重要。不论是为了协助远在他乡的家人解决问题&#xff0c;还是为了确保孩子的在线安全&#xff0c;了解如何实现这一功能都是有益的。本文将为您简要介绍几种远程控制手机的方法及其使用要点。 KKVi…...

x64dbg中类似于*.exe+地址偏移

在CE和xdb中&#xff0c;形如*.exe数字偏移形式的地址被称为模块地址&#xff0c;CE附加到进程后点击查看内存&#xff0c;显示如下图 这种地址学名叫做模块地址&#xff0c;在x64dbg中显示如下图&#xff1a; CE中可以关闭&#xff0c;从而显示绝对的虚拟地址&#xff0c;如下…...

ICode国际青少年编程竞赛- Python-1级训练场-基础训练1

ICode国际青少年编程竞赛- Python-1级训练场-基础训练1 1、 Dev.step(4)2、 Dev.step(-4) Dev.step(8)3、 Dev.turnLeft() Dev.step(4)4、 Dev.step(3) Dev.turnLeft() Dev.step(-1) Dev.step(4)5、 Dev.step(-1) Dev.step(3) Dev.step(-2) Dev.turnLeft() Dev.step(…...

Baidu Comate智能编码助手

Baidu Comate智能编码助手 &#x1f388;1.Baidu Comate的简介&#x1f388;2.安装Baidu Comate&#x1f388;3.Baidu Comate实现功能&#x1f388;4.使用注释进行智能代码提示&#x1f388;5.结束语 &#x1f388;1.Baidu Comate的简介 根据官网的介绍&#xff0c;我们了解到B…...

nginx自动部署-跨操作系统

项目里面有一个需求&#xff0c;就是需要用让nginx进程提供给系统管理一个start,stop和getPid方法&#xff0c;这样系统管理可以自动拉起来nginx&#xff0c;达到自动部署的目的。离线部署同样适用 这样一来&#xff0c;我就需要提供windows版本linux不同版本的nginx源码包&am…...

组合模式(结构型)

目录 一、前言 二、透明组合模式 三、安全组合模式 四、总结 一、前言 组合模式(Composite Pattern)是一种结构型设计模式&#xff0c;将对象组合成树形结构以表示“部分-整体”得层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式由以下角色组成…...

Pspice for TI学习

Pspice for TI中PSpice Part Search空白解决方法 配置环境变量 Cad_PSpice_TI_Regr_Srvr https://software-dl.ti.com/pspice/S009 重新安装2023版的Pspice Pspice安装链接 打开新安装的软件即可发现PSpice Part Search可以正常使用了 VSIN各参赛的含义 VOFF直流偏置VAMPL…...

LoRA的原理简介

在文章开始前先澄清一个概念&#xff0c;需要区分形近的单词"LoRa"&#xff08;long range&#xff09;&#xff0c;这是一项通信技术。熟悉物联网行业的朋友相对会比较熟悉LoRa这项技术&#xff0c;因为有些设备比如电梯的控制就使用了这个技术进行本地数据和命令的…...

安卓使用Fiddler抓包 2024

简介 最近试了一下安卓使用fiddler 抓包&#xff0c;发现https包基本都会丢失。原因是Anandroid 7版本针对ssl安全性做了加强&#xff0c;不认可用户的证书。我们要做的就是把fiddler导出的证书进过处理后放置到系统证书目录下面&#xff0c;这样才能抓包https请求。 这里使用…...

【前端每日基础】day2 const var const的区别

var: 在早期的 JavaScript 中&#xff0c;var 是声明变量的唯一方式。它有以下特点&#xff1a; var 声明的变量是函数作用域&#xff08;function-scoped&#xff09;&#xff0c;而不是块作用域&#xff08;block-scoped&#xff09;&#xff0c;这意味着它们在整个函数内部都…...

乡村振兴的文化旅游融合:整合乡村文化资源与旅游资源,发展文化旅游产业,提升美丽乡村的文化内涵和旅游吸引力

一、引言 随着城市化进程的加速和人们精神文化需求的日益增长&#xff0c;乡村旅游逐渐成为旅游市场的新热点。乡村振兴战略的提出&#xff0c;为乡村旅游的发展提供了新的契机。在这一背景下&#xff0c;如何整合乡村文化资源与旅游资源&#xff0c;发展文化旅游产业&#xf…...

力扣题目101:对称二叉树

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…...

好买卖做网站/合肥网络公司

今天做到一个笔试题&#xff1a; 快速找出一个数组中最大数和第二大的数。 既然这是一道笔试题&#xff0c;肯定要多一点思路。 我一开始拿到这个题目是这么想的&#xff1a;用冒泡或者选择法将一个数组进行从小到大排序&#xff0c;然后输出最后两个数。 显然这并不是最佳的…...

百度云 做网站/公司seo是什么级别

http://www.cnblogs.com/skychen1218/背景本公司是.Net项目&#xff0c;在.Net可选的MQ比较少&#xff0c;主要Kafka和RabbitMQ&#xff0c;RabbitMQ我也是使用多年了&#xff0c;最近的Kafka广告与流行度打得使我也是无法无视&#xff0c;因此也是花了点时间收集了资料做了些对…...

成都网站建设 今网科技/网站推广的四个阶段

TimeUnits 可以为 Seconds, Minutes, Hours 或 Days (或仅使用这些单词的首个字母). 如果 Value 为空, 则使用当前时间代替. 同样地, 如果 Var 是空变量, 则使用当前时间代替. 计算隔几天前&#xff08;后&#xff09;是哪个日期 var1 ; 赋值为空, 这样下面将会使用当前时…...

竞网做的网站怎么样/充电宝关键词优化

子选择器 引用链接&#xff1a;http://blog.csdn.net/u012110719/article/details/41171517 还有一个比较有用的选择器子选择器&#xff0c;即大于符号(>),用于选择指定标签元素的第一代子元素。如右侧代码编辑器中的代码&#xff1a; .food>li{border:1px solid red;} 这…...

广南网站建设/网络优化基础知识

本文由曹素杰&#xff08;阿里云 MVP 石化盈科信息技术有限责任公司 高级工程师&#xff09;提供&#xff0c;若使用请标明出处。 内存溢出的表现&#xff1a;a) CPU会飙升到100%&#xff0c;如果是多核则乘以核数b) 日志中会出现OutOfMemoryError 分析原因步骤&#xff1a;a) …...

广州白云网站建设公司/产品推广平台有哪些

方法1&#xff1a;快捷键&#xff1a;CtrlF5 方法2&#xff1a;菜单栏 > Display > Color/visibility 方法3&#xff1a;点击四色块状的图标 配置项1&#xff1a;透明度 Global Transparency &#xff0c;全局透明度&#xff0c;建议设置70%以上&#xff0c;接近实心…...