赞
踩
记录一次靠自己看代码解决问题的经历(总之就是非常开心)。
首先,先diss一下bing,我差一点就放弃了。
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、找出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 requested COMPILE_TYPE="reduced" OPENJDK_TARGET_CPU_BITS=32 if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then OPENJDK_TARGET_CPU=x86 elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then OPENJDK_TARGET_CPU=sparc else as_fn_error $? "Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9" "$LINENO" 5 fi # 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; then OPENJDK_TARGET_OS_TYPE="$VAR_OS_TYPE" else OPENJDK_TARGET_OS_TYPE="$VAR_OS" fi if test "x$VAR_OS_ENV" != x; then OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV" else OPENJDK_TARGET_OS_ENV="$VAR_OS" fi OPENJDK_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=arm VAR_CPU_ARCH=arm VAR_CPU_BITS=32 VAR_CPU_ENDIAN=little ;; .... esac
将VAR_CPU_BITS改成64即可。
case "$host_cpu" in
....
arm*)
VAR_CPU=arm
VAR_CPU_ARCH=arm
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
....
esac
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。