构建OpenJDK时争论不休

时间:2014-01-20 23:11:18

标签: makefile openjdk

在尝试构建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/commongrep -R 'I/home/ft/open -j1 -dk8/make/common'只会显示日志。这种情况发生在./configure --enable-debug而没有。

我发现issue on a mailing list看似相似,但似乎他放弃了。

修改:搜索-jimake/HotspotWrapper.gmk@($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) -j1 $(HOTSPOT_MAKE_ARGS) SPEC=$(HOTSPOT_SPEC) BASE_SPEC=$(BASE_SPEC))是打破事情的主要候选人

2 个答案:

答案 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,就会匹配随机目录,而恰好是在破折号之后。