在Cygwin中生成/ Execvp错误:

时间:2009-02-12 23:36:25

标签: cygwin makefile

在尝试执行增量构建时,make中发生以下错误:

  

make [2]:execvp:C:/path/to/compiler.exe:消息太长

我怀疑我的问题是execvp的参数长度。知道这个限制是什么吗?怎么会改变它?

一些奇怪的额外信息:当先前的make依赖项位于名称较短的文件夹中时,相同的命令会成功。 execvp可用的内存量是否以某种方式受先前命令的影响?

E.g。从增量构建文件(其中有数百个)的路径中删除17个字符可以节省大约12k个字符,并且编译器的6k char命令行成功。在不减少该路径的情况下,同一命令行会失败。

2 个答案:

答案 0 :(得分:1)

来自Windows的

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)太长了。