When trying to build OpenJDK, I get a series of errors while doing 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'

Running make all LOG=trace JOBS=1 gives

+ /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

as the bad argument. The relevent section is -I/home/ft/open -j1 -dk8/make/common. grep -R 'I/home/ft/open -j1 -dk8/make/common' turns up nothing more than the log. This occurs with ./configure --enable-debug and without.

I found an issue on a mailing list that seems similar, but it appears that he gave up.

Edit: Searched for -ji, make/HotspotWrapper.gmk:@($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) -j1 $(HOTSPOT_MAKE_ARGS) SPEC=$(HOTSPOT_SPEC) BASE_SPEC=$(BASE_SPEC)) is the main candidate for breaking things

有帮助吗?

解决方案 2

This appears to be part of a documented bug (JDK-8028407). The fix for this was to downgrade my make to 3.82, which does manage to compile OpenJDK.

其他提示

Here's what did it for me. Apply the following patch inside the hotspot directory:

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}}'/

It looks like one of the rules is just too wide and is matching random directories if they contain a j and happen to come after a dash.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top