交叉编译OpenJDK:HOSTCC,BUILD_CC?

时间:2019-04-05 08:28:30

标签: java cross-compiling autoconf automake

我很想移植OpenJDK8(与musl一起使用mipsel),我对术语感到很困惑。在自动工具领域,“ build”是指要在其上构建代码的系统,“ host”是指将在其上运行代码的系统,而在构建应在“ host”上运行的编译器时使用“ target”体系结构,但为第三种体系结构(所谓的“加拿大十字架”)生成代码。

虽然OpenJDK8最近才转换为自动工具,但我对术语感到困惑,也许它们也是如此。一个库正在使用构建编译器进行构建,但是将--sysroot传递给我的宿主工具链和库,从而破坏了构建。但是当在热点子项目中时,该术语看起来像在翻转!

common / autoconf / spec.gmk.in:391

# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
# build platform.
BUILD_CC:=@FIXPATH@ @BUILD_CC@
BUILD_LD:=@FIXPATH@ @BUILD_LD@

common / autoconf / hotspot-spec.gmk.in:49

# The HOSTCC/HOSTCXX is Hotspot terminology for the BUILD_CC/BUILD_CXX, i.e. the
# compiler that produces code that can be run on the build platform.
HOSTCC:=@FIXPATH@ @BUILD_CC@
HOSTCXX:=@FIXPATH@ @BUILD_CXX@

有人能对此有所启发吗?只是为那个子项目翻转了吗?

至少在JDK9中,他们为此添加了some documentation

顺便说一句,这是当前正在中断的地方:

Compiling genSocketOptionRegistry.c (for genSocketOptionRegistry)
/usr/bin/cc --sysroot="/home/daniel/proj/embedded/openwrt/staging_dir/target-mipsel_24kc_musl"  -DTHIS_FILE='"genSocketOptionRegistry.c"' -c -MMD -MF /mnt/home/daniel/proj/openjdk/icedtea-openjdk8/build/linux-mipsel-normal-zero-release/jdk/btnative/genSocketOptionRegistry/genSocketOptionRegistry.d -o /mnt/home/daniel/proj/openjdk/icedtea-openjdk8/build/linux-mipsel-normal-zero-release/jdk/btnative/genSocketOptionRegistry/genSocketOptionRegistry.o /mnt/home/daniel/proj/openjdk/icedtea-openjdk8/jdk/make/src/native/genconstants/ch/genSocketOptionRegistry.c
/mnt/home/daniel/proj/openjdk/icedtea-openjdk8/jdk/make/src/native/genconstants/ch/genSocketOptionRegistry.c:26:10: fatal error: stdio.h: No such file or directory
 #include <stdio.h>
          ^~~~~~~~~

0 个答案:

没有答案