在尝试执行增量构建时,make中发生以下错误:
make [2]:execvp:C:/path/to/compiler.exe:消息太长
我怀疑我的问题是execvp的参数长度。知道这个限制是什么吗?怎么会改变它?
一些奇怪的额外信息:当先前的make依赖项位于名称较短的文件夹中时,相同的命令会成功。 execvp可用的内存量是否以某种方式受先前命令的影响?
E.g。从增量构建文件(其中有数百个)的路径中删除17个字符可以节省大约12k个字符,并且编译器的6k char命令行成功。在不减少该路径的情况下,同一命令行会失败。
答案 0 :(得分:1)
CreateProcess()具有以下限制:
1)pCommandLine [in,out,optional]
The command line to be executed. The maximum length of this string is 32,768 characters, including the Unicode terminating null character.
2)如果进程的环境块的总大小超过32,767个字符,则此函数的ANSI版本CreateProcessA将失败。
我遇到了类似问题2)但没有找到好的解决方案。可能通过对CreateProcess()的Unicode调用重新编译cygwin会有所帮助。对我来说,从环境中移除一些东西就足够了。
Krzysztof Nowak
答案 1 :(得分:1)
我收到此错误是因为我的%PATH%(取自$ PATH)太长了。