gpt4 book ai didi

java - 如何构建 OpenJDK 8 的 C 代码 src.zip/launcher/

转载 作者:行者123 更新时间:2023-11-30 09:08:42 26 4
gpt4 key购买 nike

我已经下载了 JDK 8.20:https://jdk8.java.net/download.html

里面有一个src.zip,看起来像是嵌入的例子,但是没有makefile或者其他构建脚本。

目录/launcher/包含文件:

defines.h
emessages.h
java.c
java.h
java_md.h
java_md_common.c
java_md_solinux.c
java_md_solinux.h
jli_util.c
jli_util.h
main.c
manifest_info.h
parse_manifest.c
splashscreen.h
splashscreen_stubs.c
version_comp.c
version_comp.h
wildcard.c
wildcard.h

我制作了这个小 build.sh 脚本:

# -m32 = 32bit for embedding
# -I. for fake jvm.h, because it does not exist and fails on including it otherwise
options="-m32 -I/root/openjdk8/jdk1.8.0_20/include/ -I/root/openjdk8/jdk1.8.0_20/include/linux/ -I."

echo "COMPILE java.c"
gcc -c java.c -o java.o $options

echo "COMPILE java_md_common.c"
gcc -c java_md_common.c -o java_md_common.o $options

echo "COMPILE java_md_solinux.c"
gcc -c java_md_solinux.c -o java_md_solinux.o $options

echo "COMPILE jli_util.c"
gcc -c jli_util.c -o jli_util.o $options

echo "COMPILE main.c"
gcc -c main.c -o main.o $options

echo "COMPILE parse_manifest.c"
gcc -c parse_manifest.c -o parse_manifest.o $options

echo "COMPILE splashscreen_stubs.c"
gcc -c splashscreen_stubs.c -o splashscreen_stubs.o $options

echo "COMPILE version_comp.c"
gcc -c version_comp.c -o version_comp.o $options

echo "COMPILE wildcard.c"
gcc -c wildcard.c -o wildcard.o $options

出现这些错误:

./build.sh
COMPILE java.c
java.c: In function âContinueInNewThreadâ:
java.c:1885:29: error: storage size of âargs1_1â isnât known
COMPILE java_md_common.c
java_md_common.c: In function âProgramExistsâ:
java_md_common.c:67:17: error: storage size of âsbâ isnât known
java_md_common.c:70:26: error: âS_IEXECâ undeclared (first use in this function)
java_md_common.c:70:26: note: each undeclared identifier is reported only once for each function it appears in
java_md_common.c: In function âJLI_ReportErrorMessageSysâ:
java_md_common.c:155:21: error: âerrnoâ undeclared (first use in this function)
java_md_common.c: In function âProcessDirâ:
java_md_common.c:214:5: error: unknown type name âDIRâ
java_md_common.c:222:15: warning: assignment makes pointer from integer without a cast [enabled by default]
java_md_common.c:226:17: warning: assignment makes pointer from integer without a cast [enabled by default]
java_md_common.c:228:18: error: dereferencing pointer to incomplete type
java_md_common.c:229:18: error: dereferencing pointer to incomplete type
java_md_common.c:231:22: error: dereferencing pointer to incomplete type
java_md_common.c:233:22: error: dereferencing pointer to incomplete type
java_md_common.c:236:46: error: dereferencing pointer to incomplete type
java_md_common.c:237:67: error: dereferencing pointer to incomplete type
java_md_common.c:239:25: error: dereferencing pointer to incomplete type
java_md_common.c:242:48: error: dereferencing pointer to incomplete type
java_md_common.c: In function âFindBootStrapClassâ:
java_md_common.c:494:59: error: âRTLD_DEFAULTâ undeclared (first use in this function)
COMPILE java_md_solinux.c
java_md_solinux.c:27:20: fatal error: jvm_md.h: No such file or directory
compilation terminated.
COMPILE jli_util.c
COMPILE main.c
In file included from main.c:33:0:
defines.h:37:2: error: #error "FULL_VERSION must be defined"
defines.h:44:2: error: #error "JDK_MAJOR_VERSION and JDK_MINOR_VERSION must be defined"
main.c: In function âmainâ:
main.c:128:20: error: âFULL_VERSIONâ undeclared (first use in this function)
main.c:128:20: note: each undeclared identifier is reported only once for each function it appears in
main.c:129:20: error: âDOT_VERSIONâ undeclared (first use in this function)
COMPILE parse_manifest.c
COMPILE splashscreen_stubs.c
COMPILE version_comp.c
COMPILE wildcard.c

有人知道怎么编译吗?

最佳答案

我现在面临同样的问题。也许可以通过为您的设置提供 jvm.h 和 jvm_md.h 来解决。两者都包含特定于 jvm 的符号,并且 jvm_md.h 还包含额外的平台相关符号。因此,您需要为目标 jvm 选择 jvm.h,为目标平台选择 jvm_md.h。要获取 Oracle 的 OpenJDK8 的这些 header ,请转到 http://download.java.net/openjdk/jdk8/并下载源代码。 (对于 Java 7,它是 http://download.java.net/openjdk/jdk7/ 等)

在此文件中,您将在文件夹中找到 jvm.h/openjdk/jdk/src/share/javavm/export/

jvm_md.h 在文件夹中:/openjdk/jdk/src/[目标平台]/javavm/export/

请注意,对于 Linux 和 Bsd,此路径不存在(/openjdk/jdk/src/[目标平台] 仅包含这些情况下的文档)。不过,我相信 Solaris 版本也旨在为这些系统提供服务。

希望这有助于...

关于java - 如何构建 OpenJDK 8 的 C 代码 src.zip/launcher/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23392649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com