2009-02-12 11 views
0

L'erreur suivante se produit dans la marque, tout en essayant de faire incrémental construit:Marque/execvp Erreur dans Cygwin:

make [2]: execvp: C: /path/to/compiler.exe: Message trop long

Je soupçonne que mon problème ici est la longueur de l'argument pour execvp. Une idée de ce que cette limite est? Comment pourrait-on changer cela?

Quelques informations supplémentaires curieuses: la même commande réussit lorsque les dépendances précédentes sont dans un dossier avec un nom plus court. La quantité de mémoire disponible pour execvp dépend-elle d'une manière ou d'une autre des commandes précédentes?

Par ex couper 17 caractères du chemin vers les fichiers de construction incrémentiels (dont il existe des centaines) permet d'économiser environ 12k caractères, et la ligne de commande 6k char pour le compilateur réussit. Sans réduire ce chemin, la même ligne de commande échoue.

Répondre

1

CreateProcess() à partir de Windows présente les limites suivantes:

1) pCommandLine [in, out, option]

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

2) La version ANSI de cette fonction, CreateProcessA échoue si la taille totale du bloc d'environnement pour le processus dépasse 32 767 caractères.

J'ai eu un problème similaire causé par la limitation 2) mais aucune bonne solution n'a été trouvée. La recompilation de Cygwin avec des appels Unicode à CreateProcess() serait probablement utile. Pour moi, il suffisait d'enlever quelque chose de l'environnement.

Nowak Krzysztof

+0

Il semble que la solution de contournement ("réparer votre ligne de commande pour ne pas être déraisonnable") est la meilleure option ici. Merci pour l'info! –

+0

Ma solution de contournement est un script qui enveloppe la commande et supprime les variables d'environnement: http://www.win.tue.nl/~rp/bin/wopath – reinierpost

1

Je reçois cette erreur parce que mon% PATH% (qui est tirée de $ PATH) est trop long.

+0

Merci, mon PATH n'était pas trop long mais cela m'a forcé à examiner et j'ai vu que j'avais des répertoires bin conflictuels sur mon chemin à partir d'utilitaires non-Cygwin. – Philip