[英]How to configure openJDK11 for build from sources?
我需要從源代碼交叉編譯這個 OpenJava fork https://gitlab.com/gosjava/11/openjdk/-/tree/master/ - 對於 aarch64-linux-gnu devkit 目標:為此我安裝了 java 10.0。主機 JDK 然后運行“./configure”
└─$ ./configure
...
configure: Potential Boot JDK found at /home/katya/java is incorrect JDK version (Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true); ignoring
configure: (Your Boot JDK version must be one of: 10 11)
checking for javac... /home/katya/java/bin/javac
checking for java... /home/katya/java/bin/java
configure: Found potential Boot JDK using java(c) in PATH
configure: Potential Boot JDK found at /home/katya/java is incorrect JDK version (Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true); ignoring
configure: (Your Boot JDK version must be one of: 10 11)
configure: Could not find a valid Boot JDK. You might be able to fix this by running 'sudo apt-get install openjdk-8-jdk'.
configure: This might be fixed by explicitly setting --with-boot-jdk
configure: error: Cannot continue
configure exiting with result code 1
完整日志在這里https://gist.github.com/iva-nova-e-katerina/3061b865beb48dc25594bc360508d6a3你能告訴我為什么配置說我使用了錯誤的JDK嗎?
該消息是由定義在“jdk11u/make/autoconf/boot-jdk.m4”中的BOOTJDK_DO_CHECK
autoconf 宏生成的。 如果您查看該文件,您將看到以下內容:
BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $HEAD -n 1`
# Extra M4 quote needed to protect [] in grep expression.
[FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION \
| $EGREP "\"(${DEFAULT_ACCEPTABLE_BOOT_VERSIONS// /|})([\.+-].*)?\""`]
if test "x$FOUND_CORRECT_VERSION" = x; then
AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK is incorrect
JDK version ($BOOT_JDK_VERSION); ignoring])
AC_MSG_NOTICE([(Your Boot JDK version must be one of:
$DEFAULT_ACCEPTABLE_BOOT_VERSIONS)])
BOOT_JDK_FOUND=no
(為了便於閱讀,我添加了幾個換行符......)
如果我們將其與實際的錯誤消息進行比較:
configure: Potential Boot JDK found at /home/katya/java is incorrect JDK version
(Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true);
ignoring
所以......它看起來像:
configure
時有效的環境中設置了_JAVA_OPTIONS
環境變量。java
命令警告您_JAVA_OPTIONS
有效(出於安全原因。)。 大概是真正的版本字符串得到 output 作為下一行head -n 1
)...然后使用警告消息,就好像它是真正的版本字符串一樣。 您可能有一個有效的 Boot JDK……但是configure
被警告消息弄糊塗了,並認為您沒有。
可能的解決方案:
只需取消設置_JAVA_OPTIONS
。 這些選項看起來與您正在做的事情無關。
如果與構建相關,請在運行configure
時取消設置_JAVA_OPTIONS
。 然后重新設置。
如果由於某些原因_JAVA_OPTIONS
不起作用,您可以修改上述“.m4”文件以跳過版本檢查。 (呃……)
您可以閱讀更多關於_JAVA_OPTIONS
的這種不需要的(盡管實際上是必要的)行為:
(簡短的回答是“你不能”......除了取消設置環境變量。)
安裝 OpenJDK 二進制文件,例如 /opt/jdk-bin 然后,
./configure --with-boot-jdk=/opt/jdk
就是這樣
好吧,我正在通過檢查我的想法來構建 Linux 系統。 所以這與感情無關。 這是關於檢查和重新檢查它們。 這是學習的唯一途徑。 無論如何,構建 OpenJDK 並非易事,需要一些工作。 所以
build/.configure-support/generated-configure.sh ...您設置了 JAVA_OPTIONS 或 JAVA_TOOL_OPTIONS。 這可能會破壞構建
與凱瑟琳的問題無關。
配置:這可以通過顯式設置 --with-boot-jdk 來解決
發生在我身上,所以我找到了上述解決方案。 它確實解決了問題並且構建通過了。 唉,由於 Linux 有其自己的神秘方式,今天早上我重新檢查並令人驚訝地配置順利通過,但由於帳戶警告被視為錯誤而構建失敗。 這通過以下方式解決
vi build/linux-x86_64-server-release/spec.gmk
並刪除那里出現的 -Werror ,一切都很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.