Makefile 构建OpenJDK时的混乱参数
在尝试构建OpenJDK时,我在执行Makefile 构建OpenJDK时的混乱参数,makefile,openjdk,Makefile,Openjdk,在尝试构建OpenJDK时,我在执行makeall时遇到了一系列错误: /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' 运行make all LOG=trace JOBS=1
makeall
时遇到了一系列错误:
/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'
运行make all LOG=trace JOBS=1
+ /usr/bin/make VERBOSE= LOG_LEVEL=trace -R -I /home/ft/openjdk8/make/common -f adlc.make -r -rRw -I/home/ft/open -j1 -dk8/make/common -I/home/ft/openjdk8/make/common -I/home/ft/openjdk8/make/common -I/home/ft/openjdk8/make/common -I/home/ft/openjdk8/make/common
这是一个糟糕的论点。相关部分为-I/home/ft/open-j1-dk8/make/common
<代码>grep-R'I/home/ft/open-j1-dk8/make/common'只显示日志。这在/configure--enable debug
和不启用时发生
我找到了一个看起来很相似的人,但他似乎放弃了
编辑:搜索
-ji
,make/hostpotwrapper.gmk
:@($(CD)$(hostpot\u TOPDIR)/make&&$(make)-j1$(hostpot\u make\u ARGS)SPEC=$(hostpot\u SPEC)BASE\u SPEC=$(BASE\u SPEC))
是破坏东西的主要候选对象这似乎是已记录的bug()的一部分。修复方法是将make降级到3.82,这确实可以编译OpenJDK。下面是它为我做的事情。在热点目录中应用以下修补程序:
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}}'/
看起来其中一条规则太宽了,如果它们包含一个j并且恰好在一个破折号之后,那么它就匹配了随机目录。一些东西正在运行一个类似于
s/jd/j1-/
的替换,这将I/home/ft/openjdk8/make/common
变成-I/home/ft/open-j1-dk8/make/common
。这似乎是试图在make上强制执行最大数量的作业(与裸-j
的默认无界行为相反)。我还想知道是什么导致了-I
参数被重复了这么多次(尽管这可能是正常的不良操作,并且这次运行没有特别的损坏/错误)。任何人都能提供帮助的唯一方式是,如果您在调用子make的makefile中找到规则,并显示该规则。一旦变量等由make展开,如您所见,损坏已经完成,并且没有来自makefile的内容(在损坏之前)我们不知道发生了什么。@Madscient我在make方面的大部分经验都是作为最终用户,您对我如何做有什么建议吗?搜索-f adlc.make
出现@$(make)-f adlc.make$(MFLAGS调整)
在热点/make/linux/makefiles/top.make中,但这似乎不是顶级make,因为在-f之前有额外的参数。