2009-02-12 3 views
0

Следующая ошибка возникает в замыкающих, при попытке сделать инкрементный сборки:Марка/Execvp Ошибка в Cygwin:

грим [2]: execvp: C: /path/to/compiler.exe: Сообщение слишком long

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

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

E.g. измельчение 17 символов с пути к инкрементным файлам сборки (из которых сотни) экономит около 12 тыс. символов, а командная строка 6k char для компилятора завершается успешно. Не уменьшая этот путь, одна и та же командная строка терпит неудачу.

ответ

1

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

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) Версия ANSI этой функции, CreateProcessA терпит неудачу, если суммарный размер блока среды для процесса превышает 32 767 символов.

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

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

+0

Кажется, обходной путь («исправить вашу командную строку, чтобы не быть необоснованным») является лучшим вариантом здесь. Спасибо за информацию! –

+0

Мое обходное решение - это сценарий, который обертывает команду и разбивает переменные среды: http://www.win.tue.nl/~rp/bin/wopath – reinierpost

1

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

+0

Спасибо, моя ПУТЬ была не слишком длинной, но это заставило меня изучить это и видеть, что у меня были конфликтующие bin dirs на моем пути от не-Cygwin-утилит. – Philip

Смежные вопросы