编译openjdk 8的时候可能会碰到两个问题,这里临时把patch放这里,免得大家找答案。
Creating vm.make ...
Creating adlc.make ...
Creating jvmti.make ...
Creating trace.make ...
Creating sa.make ...
/usr/bin/make: invalid option -- '8'
/usr/bin/make: invalid option -- '/'
/usr/bin/make: invalid option -- 'a'
/usr/bin/make: invalid option -- '/'
/usr/bin/make: invalid option -- 'c'
Usage: make [options] [target] ...
Options:
-b, -m Ignored for compatibility.
-B, --always-make Unconditionally make all targets.
-C DIRECTORY, --directory=DIRECTORY
Change to DIRECTORY before doing anything.
-d Print lots of debugging information.
--debug[=FLAGS] Print various types of debugging information.
-e, --environment-overrides
这是openjdk makefile的问题。
patch如下。
diff -r 87ee5ee27509 make/linux/makefiles/adjust-mflags.sh
--- a/make/linux/makefiles/adjust-mflags.sh Tue Mar 04 11:51:03 2014 -0800
+++ b/make/linux/makefiles/adjust-mflags.sh Wed Sep 30 16:51:55 2015 -0700
@@ -64,7 +64,6 @@
echo "$MFLAGS" \
| sed '
s/^-/ -/
- s/ -\([^ ][^ ]*\)j/ -\1 -j/
s/ -j[0-9][0-9]*/ -j/
s/ -j\([^ ]\)/ -j -\1/
s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
【就是把第二个s命令删掉。这个网页显示有问题,所以,说明一下】
Running nasgen
Exception in thread "main" java.lang.VerifyError: class jdk.nashorn.internal.objects.ScriptFunctionImpl overrides final method setPrototype.(Ljava/lang/Object;)V
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at jdk.nashorn.internal.tools.nasgen.StringConstants.<clinit>(StringConstants.java:85)
at jdk.nashorn.internal.tools.nasgen.MemberInfo.verify(MemberInfo.java:283)
at jdk.nashorn.internal.tools.nasgen.ScriptClassInfo.verify(ScriptClassInfo.java:227)
at jdk.nashorn.internal.tools.nasgen.Main.process(Main.java:108)
at jdk.nashorn.internal.tools.nasgen.Main.processAll(Main.java:88)
at jdk.nashorn.internal.tools.nasgen.Main.main(Main.java:62)
make[1]: *** [/home/wjeon/my_opejdk8/build/linux-x86_64-normal-server-release/nashorn/classes/_the.nasgen.run] Error 1
patch如下
diff -r 096dc407d310 make/BuildNashorn.gmk
--- a/make/BuildNashorn.gmk Tue Mar 04 11:52:23 2014 -0800
+++ b/make/BuildNashorn.gmk Mon Jul 20 22:33:16 2020 -0700
@@ -77,7 +77,7 @@
$(RM) -rf $(@D)/jdk $(@D)/netscape
$(CP) -R -p $(NASHORN_OUTPUTDIR)/nashorn_classes/* $(@D)/
$(FIXPATH) $(JAVA) \
- -cp "$(NASHORN_OUTPUTDIR)/nasgen_classes$(PATH_SEP)$(NASHORN_OUTPUTDIR)/nashorn_classes" \
+ -Xbootclasspath/p:"$(NASHORN_OUTPUTDIR)/nasgen_classes$(PATH_SEP)$(NASHORN_OUTPUTDIR)/nashorn_classes" \
jdk.nashorn.internal.tools.nasgen.Main $(@D) jdk.nashorn.internal.objects $(@D)
$(TOUCH) $@
这个显示diff的效果怎么那么奇怪,没法看。。。。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
这个显示diff的效果怎么那么奇怪,没法看。。。。
@yehandong Looks better now.
@yehandong Looks better now.
@Maple_YZhang 怎么改的?我怎么搞不定
@Maple_YZhang 怎么改的?我怎么搞不定
@yehandong 需要用code block 的格式。编辑时敲Ctrl-/ 会显示帮助信息,其中有code block 的说明。
Docker编译过程,https://ystyle.top/2020/07/21/dokcer-compile-maple-engine/
我没遇到第二个。
PS: Dockerfile可合并进来么?
@yehandong @Maple_YZhang 请问运行时有遇到 core dumped 是什么个情况?
Docker编译过程,https://ystyle.top/2020/07/21/dokcer-compile-maple-engine/
我没遇到第二个。
PS: Dockerfile可合并进来么?
@东方星痕
大佬有跑起来hello world吗?
其他示例能跑起来吗?看起来是支持反射的!
(看到内存流哈喇子……)
@yehandong @Maple_YZhang 请问运行时有遇到 core dumped 是什么个情况?
@MihuSeen 很多情况可能导致core dumped:
public class Object {
long reserved_1; int reserved_2; // Add two extra fields here
private static native void registerNatives();
解决办法是用openjdk-8-jre-headless里的libjvm.so:
sudo apt install -y openjdk-8-jre-headless
cd maple_engine/maple_runtime/lib/x86_64/
rm -f libverify.so libjvm.so libjava.so
@wconly @东方星痕
试一试用openjdk-8-jre-headless里的libjvm.so?sudo apt install -y openjdk-8-jre-headless cd maple_engine/maple_runtime/lib/x86_64/ rm -f libverify.so libjvm.so libjava.so
@Maple_YZhang
我使用的是 @东方星痕 提供的docker image
按照您说的办法成功惹!
https://images.gitee.com/uploads/images/2020/0722/021459_eca2399f_5282271.png
我之前dump了一下文件夹里的.so,缺失的是write_ref_array_pre_work,看起来像是g1乐色回收器里的函数,不知怎么搞的?
@Maple_YZhang
按照您说的办法成功惹……!
https://images.gitee.com/uploads/images/2020/0722/021459_eca2399f_5282271.png
我之前dump了一下文件夹里的.so,缺失的是write_ref_array_pre_work,看起来像是g1乐色回收器里的函数,不知怎么搞的?
@wconly 很高兴知道您能成功运行了。刚把回答里面的问号去掉了。
@wconly 很高兴知道您能成功运行了。刚把回答里面的问号去掉了。
@Maple_YZhang
吸吸,也恭喜贵司公开的maple环境可以跑起来惹!
不过看来脚本还要对应的调整下噜……
厚厚厚,胜利归于 @东方星痕, docker image是他提供的惹……
只是我不知道为什么那些.so缺少那个函数?
正在试Fibonacci,看样子现在释出的环境是支持反射的?!
简单试了几个Fibonacci数据也没问题,当然数据过大时爆掉也属正常,会弹“Segmentation fault”……
又试了官方给出的RCCycleTest与一个简单的反射例子,但是看起来目前似乎还没有支持……
等待继续开放吧!
加油惹~
@Maple_YZhang
我使用的是 @东方星痕 提供的docker image
按照您说的办法成功惹!
https://images.gitee.com/uploads/images/2020/0722/021459_eca2399f_5282271.png
我之前dump了一下文件夹里的.so,缺失的是write_ref_array_pre_work,看起来像是g1乐色回收器里的函数,不知怎么搞的?
@wconly 这个符号write_ref_array_pre_work 问题是由OpenJDK-8的构建引起的。您可以尝试用刚构建好的OpenJDK-8的工具链(javac和java,在目录build/linux-x86_64-normal-server-release/images/j2sdk-image/bin/中),编译和运行一个小程序,会遇到同样的错误信息。
@wconly 这个符号write_ref_array_pre_work 问题是由OpenJDK-8的构建引起的。您可以尝试用刚构建好的OpenJDK-8的工具链(javac和java,在目录build/linux-x86_64-normal-server-release/images/j2sdk-image/bin/中),编译和运行一个小程序,会遇到同样的错误信息。
@Maple_YZhang
昨天跑了官网上给出的RCCycleTest,没有成功
但是刚刚又跑了一遍,看上去官网给出的示例都成功惹……(气cry,努力一定会成功,不努力就去屎惹~)
RCCycleTest
https://images.gitee.com/uploads/images/2020/0722/100927_d736d8ba_5282271.png
ThreadTest
https://images.gitee.com/uploads/images/2020/0722/101316_075c209e_5282271.png
Arith
https://images.gitee.com/uploads/images/2020/0722/101845_73e4dc09_5282271.png
给你们很多很好的评价惹~
@wconly 这个符号write_ref_array_pre_work 问题是由OpenJDK-8的构建引起的。您可以尝试用刚构建好的OpenJDK-8的工具链(javac和java,在目录build/linux-x86_64-normal-server-release/images/j2sdk-image/bin/中),编译和运行一个小程序,会遇到同样的错误信息。
@Maple_YZhang
但是简单的反射实验还是失败
先Class.forName("java.lang.String")
后getDeclaredMethods()
结果
https://images.gitee.com/uploads/images/2020/0722/104058_72b88434_5282271.png
用javac、java是可以正常运行打印的……
@Maple_YZhang
另外,最后要用openjdk-8-jre-headless来替换原libjvm.so需要加入文档吧?
@wconly 这个其实是我构建镜像时复制进去的,只要把dockerfile那几行删除就好了
@Maple_YZhang
另外,最后要用openjdk-8-jre-headless来替换原libjvm.so需要加入文档吧?
@wconly 在最初的文档中已经提到这一点,是英文的:Shared libraries(Can use these three shared libraries from the openjdk-8-jdk-headless package also)
。不过文档还是更新了。谢谢!
@wconly 在最初的文档中已经提到这一点,是英文的:
Shared libraries(Can use these three shared libraries from the openjdk-8-jdk-headless package also)
。不过文档还是更新了。谢谢!
@Maple_YZhang
好的~
不过反射部分看起来还是有问题惹……
@Maple_YZhang
好的~
不过反射部分看起来还是有问题惹……
@wconly 好的,看到上面提到的问题了,会尽快解决。
@wconly 好的,看到上面提到的问题了,会尽快解决。
@Maple_YZhang
加油惹~
登录 后才可以发表评论