【发布时间】:2014-02-10 08:00:22
【问题描述】:
在尝试构建 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))是破坏事物的主要候选人
【问题讨论】:
-
某些东西正在运行类似
s/jd/j1 -/的替换,这会将I/home/ft/openjdk8/make/common变成-I/home/ft/open -j1 -dk8/make/common它会出现。这似乎是试图在 make 上强制执行最大数量的作业(与裸-j的默认无限制行为相反)。 -
我也想知道是什么导致
-I参数被重复了这么多次(尽管这可能是正常的不良操作,并且这次运行没有特别的破坏/错误)。 -
任何人都可以提供帮助的唯一方法是,如果您在 makefile 中找到调用子 make 的规则,并显示出来。一旦变量等被 make 扩展,如您所见,损坏已经造成,如果没有 makefile 中的内容(损坏之前),我们无法知道发生了什么。
-
@MadScientist 我对 make 的大部分经验都是作为最终用户,您对我如何做到这一点有什么建议吗?搜索
-f adlc.make在hotspot/make/linux/makefiles/top.make中找到了@$(MAKE) -f adlc.make $(MFLAGS-adjusted),但这似乎不是顶级品牌,因为-f 之前的附加参数。