交叉编译 openjdk 11u 到 Android 设备
Cross-compile openjdk 11u to Android device
我正在尝试将 openjdk 11u 交叉编译为 android。我正在使用以下命令:
CC=aarch64-linux-android21-clang CXX=aarch64-linux-android21-clang++ bash configure --openjdk-target=aarch64-linux-android21 --with-toolchain-path=/mnt/d/ubuntu/NDK/build/tools/toolchain --with-sysroot=/mnt/d/ubuntu/NDK/build/tools/toolchain/sysroot --disable-warnings-as-errors
但我收到以下输出错误:
checking resolved symbolic links for CC... no symlink configure: The C
compiler (located as
/mnt/d/ubuntu/NDK/build/tools/toolchain/bin/aarch64-linux-android21-clang)
does not seem to be the required gcc compiler. configure: The result
from running with --version was: "" configure: error: A gcc compiler
is required. Try setting --with-tools-dir. configure exiting with
result code 1
但如果我使用
/mnt/d/ubuntu/NDK/build/tools/toolchain/bin/aarch64-linux-android21-clang --version
输出是:
Android (6454773 based on r365631c2) clang version 9.0.8
(https://android.googlesource.com/toolchain/llvm-project
98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)
Target: aarch64-unknown-linux-android21 Thread model: posix
InstalledDir: /mnt/d/ubuntu/NDK/build/tools/toolchain/bin
如果您阅读 GCC vs. Clang/LLVM: An In-Depth Comparison of C/C++ Compilers,很明显 clang 不是 gcc 编译器。
但是,当您查看源代码树时(例如 .../jdk11/make/autoconf/toolchain.m4),有明显迹象表明 clang 工具链可用于构建 JVM。问题似乎是 m4 宏不理解 android 作为目标平台,并且似乎已经退回到尝试使用 gcc。
请注意,Java 11 个构建说明是这样说的:
clang
The minimum accepted version of clang is 3.2. Older versions will not
be accepted by configure
.
To use clang instead of gcc on Linux, use
--with-toolchain-type=clang
.
话虽如此,我不评价您通过 简单地 交叉编译 OpenJDK Java 11 在 Android 上工作的机会。
有一个 OpenJDK 项目,用于将 Java 移植到 http://openjdk.java.net/projects/mobile/ 的移动设备......它们似乎在 Java 9 停滞不前。这对我来说意味着会有要在 Android 上实现 OpenJDK Java 11,需要完成大量工作。您可能想了解该项目以及可能仍在从事该项目的任何人。
我正在尝试将 openjdk 11u 交叉编译为 android。我正在使用以下命令:
CC=aarch64-linux-android21-clang CXX=aarch64-linux-android21-clang++ bash configure --openjdk-target=aarch64-linux-android21 --with-toolchain-path=/mnt/d/ubuntu/NDK/build/tools/toolchain --with-sysroot=/mnt/d/ubuntu/NDK/build/tools/toolchain/sysroot --disable-warnings-as-errors
但我收到以下输出错误:
checking resolved symbolic links for CC... no symlink configure: The C compiler (located as /mnt/d/ubuntu/NDK/build/tools/toolchain/bin/aarch64-linux-android21-clang) does not seem to be the required gcc compiler. configure: The result from running with --version was: "" configure: error: A gcc compiler is required. Try setting --with-tools-dir. configure exiting with result code 1
但如果我使用
/mnt/d/ubuntu/NDK/build/tools/toolchain/bin/aarch64-linux-android21-clang --version
输出是:
Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn) Target: aarch64-unknown-linux-android21 Thread model: posix InstalledDir: /mnt/d/ubuntu/NDK/build/tools/toolchain/bin
如果您阅读 GCC vs. Clang/LLVM: An In-Depth Comparison of C/C++ Compilers,很明显 clang 不是 gcc 编译器。
但是,当您查看源代码树时(例如 .../jdk11/make/autoconf/toolchain.m4),有明显迹象表明 clang 工具链可用于构建 JVM。问题似乎是 m4 宏不理解 android 作为目标平台,并且似乎已经退回到尝试使用 gcc。
请注意,Java 11 个构建说明是这样说的:
clang
The minimum accepted version of clang is 3.2. Older versions will not be accepted by
configure
.To use clang instead of gcc on Linux, use
--with-toolchain-type=clang
.
话虽如此,我不评价您通过 简单地 交叉编译 OpenJDK Java 11 在 Android 上工作的机会。
有一个 OpenJDK 项目,用于将 Java 移植到 http://openjdk.java.net/projects/mobile/ 的移动设备......它们似乎在 Java 9 停滞不前。这对我来说意味着会有要在 Android 上实现 OpenJDK Java 11,需要完成大量工作。您可能想了解该项目以及可能仍在从事该项目的任何人。