在尝试构建OpenJDK时,我在执行make all
时遇到一系列错误:
/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
而没有。
我发现issue on a mailing list看似相似,但似乎他放弃了。
修改:搜索-ji
,make/HotspotWrapper.gmk
:@($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) -j1 $(HOTSPOT_MAKE_ARGS) SPEC=$(HOTSPOT_SPEC) BASE_SPEC=$(BASE_SPEC))
是打破事情的主要候选人
答案 0 :(得分:5)
这似乎是文档错误(JDK-8028407)的一部分。解决这个问题的方法是将我的make降级为3.82,这样可以设法编译OpenJDK。
答案 1 :(得分:5)
这就是为我做的事情。在热点目录中应用以下补丁:
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,就会匹配随机目录,而恰好是在破折号之后。