Ошибка Make / Execvp в Cygwin: - PullRequest
       17

Ошибка Make / Execvp в Cygwin:

0 голосов
/ 13 февраля 2009

При попытке выполнить инкрементную сборку возникает следующая ошибка:

make [2]: execvp: C: /path/to/compiler.exe: слишком длинное сообщение

Я подозреваю, что моей проблемой здесь является длина аргумента для execvp. Есть идеи, что это за предел? Как можно изменить это?

Некоторая любопытная дополнительная информация: та же команда успешно выполняется, если предыдущие зависимости make находятся в папке с более коротким именем. На количество памяти, доступное execvp, как-то влияют предыдущие команды?

например. Отрезание 17 символов от пути к файлам инкрементной сборки (из которых их сотни) экономит около 12 000 символов, и командная строка 6k char для компилятора завершается успешно. Без сокращения этого пути та же командная строка завершается сбоем.

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

Я получаю эту ошибку, потому что мой% PATH% (который взят из $ PATH) слишком длинный.

1 голос
/ 13 мая 2009

CreateProcess () из Windows имеет следующие ограничения:

1) pCommandLine [in, out, необязательно]

The command line to be executed. The maximum length of this string is 32,768 characters, including the Unicode terminating null character.

2) Версия ANSI этой функции CreateProcessA завершается ошибкой, если общий размер блока среды для процесса превышает 32 767 символов.

У меня была похожая проблема, вызванная ограничением 2), но хорошего решения не найдено. Возможно, перекомпиляция cygwin с вызовами Unicode для CreateProcess () поможет. Для меня было достаточно удалить что-то из окружающей среды.

Кшиштоф Новак

...