Java 将openjdk 11u交叉编译到Android设备
我正在尝试将openjdk 11u交叉编译到android。我正在使用以下命令:Java 将openjdk 11u交叉编译到Android设备,java,android,android-ndk,cross-compiling,Java,Android,Android Ndk,Cross Compiling,我正在尝试将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/
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
但我得到的输出错误如下:
正在检查CC的已解析符号链接。。。无符号链接配置:C
编译器(位于
/mnt/d/ubuntu/NDK/build/tools/toolchain/bin/aarch64-linux-android21-clang)
似乎不是必需的gcc编译器。配置:结果
使用--version was运行时出现以下错误:配置:错误:gcc编译器
是必需的。尝试设置--使用工具目录。使用配置退出
结果代码1
但是如果我使用
/mnt/d/ubuntu/NDK/build/tools/toolchain/bin/aarch64-linux-android21-clang --version
输出为:
Android(基于r365631c2的6454773)clang版本9.0.8
(
98c855489587874b2a325e7a516b99d838599c6f)(基于LLVM 9.0.8svn)
目标:AARC64-unknown-linux-android21线程型号:posix
InstalledDir:/mnt/d/ubuntu/NDK/build/tools/toolschain/bin
如果您阅读,很明显,clang不是一个gcc编译器
但是,当您查看源代码树(例如..../jdk11/make/autoconf/toolchain.m4)时,有明显的迹象表明可以使用铿锵的工具链来构建JVM。问题似乎是m4宏不理解android作为目标平台,并且似乎已经退回到尝试使用gcc的阶段
请注意,Java 11构建说明如下所示:
叮当声
clang的最低可接受版本为3.2。旧版本将不会
被configure
接受
要在Linux上使用clang而不是gcc,请使用
——使用工具链类型=clang
话虽如此,我并不认为通过简单的交叉编译就可以让OpenJDKJava11在Android上运行 有一个OpenJDK项目,用于将Java移植到位于。。。他们似乎在Java9上停滞不前。这对我来说意味着,要在Android上实现一个工作正常的OpenJDKJava11,还有很多工作要做。您可能希望与该项目以及可能仍在进行该项目的任何人取得联系