0

在尝试进行增量构建时,make 中会出现以下错误:

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

我怀疑我的问题是 execvp 的参数长度。知道那个限制是什么吗?如何改变这一点?

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

例如,从增量构建文件(其中有数百个)的路径中删除 17 个字符可以节省大约 12k 个字符,并且编译器的 6k char 命令行成功。如果不减少该路径,相同的命令行将失败。

4

2 回答 2

1

Windows 中的 CreateProcess() 具有以下限制:

1) pCommandLine [输入,输出,可选]

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 会有所帮助。对我来说,从环境中移除一些东西就足够了。

克日什托夫·诺瓦克

于 2009-05-13T10:52:30.423 回答
1

我收到此错误是因为我的 %PATH%(取自 $PATH)太长。

于 2009-11-12T11:19:22.460 回答