ar.exe via cygwin

ar.exe via cygwin - C++ - Programmation

Marsh Posté le 26-02-2007 à 16:46:19    

Bonjour,
En fait je ne comprends pas tres bien le fonctionnment d'ar sous cygwin donc c'était pour savoir si quelqu'un connaissais une astuce pour que ca passe.  
Dans un makefile vachement dense et donc limite illisible , j'ai cet appel : ar x blabla/blabla.a
Je n'arrive pas vraiment à le repérer dans le makefile, mais en gros ca bug. En cherchant un peu j'ai trouvé que ca buggais des que je remontais jusqu'aux différents cygdrives...
http://img172.imageshack.us/img172/6449/72478461lg8.jpg
(ici permier cas marche, second cas foires)
 
Quelqu'un saurait pourquoi ca fait ca ? Si c'est un bug de cygwin? Ou encore s'il aurait une idée sur comment pallier le pb, sachant que bidouiller le makefile serait une des dernieres choses que je voudrais faire n'ayant jamais vraiment regardé jusqu'a maintenant comment ca se construisais.

Reply

Marsh Posté le 26-02-2007 à 16:46:19   

Reply

Marsh Posté le 26-02-2007 à 17:42:43    

Il semble que dans le deuxième cas, tu as un espace entre le deuxième et troisième "../.." ce qui est vraisemblablement incorrect.
 
J'avais eu un problème similaire de compilation sous cygwin, et ça venait des symboles '\' dans le makefile. Ce symbole inséré à la fin d'une ligne indique que la commande continue à la ligne suivante. Visiblement, gnu make ne l'interprète pas de la même manière sous Linux et sous Cygwin.
J'avais alors édité le fichier Makefile et enlevé tous les '\' en faisant attention de bien rétablir la commande sur une seule ligne et ça a fonctionné comme ça...
 

Reply

Marsh Posté le 27-02-2007 à 09:10:09    

Heh, non ce n'est pas une erreur d'espace entre le deuxieme et le troisieme "../.." :D
Mais je vais tenter la suppression de tous les '\' apres tout on peut esperer que ce soit ca, même si j'ai des doutes vu que j'ai du compiler quelques makefiles auparavant et qu'ils ne m'ont causé aucun problème. L'ar.exe ne pourrait pas être en cause??

Reply

Marsh Posté le 27-02-2007 à 09:20:29    

Et la suppression des '\' n'as rien changé .. toujours la même erreur :s

Reply

Marsh Posté le 27-02-2007 à 11:16:25    

docusland a écrit :

Heh, non ce n'est pas une erreur d'espace entre le deuxieme et le troisieme "../.." :D


Pardon, je dervais mettre des lunettes  :lol:  
 
Bon, c'est bizzare ton truc...
Et si dans la deuxième commande (celle qui fonctionne pas) tu remplace 'ar x' par 'ls', histoire de verifier que le fichier est bien accessible ??
 
Sinon pour les '\' dans les makefile, je les avais en fait pas viré mais j'avais dû rajouter un espace avant le sybmole '\' car pour une raison que j'ignore:
 
ligne1\
ligne2
 
est correctement interpreté par "ligne1 ligne2" sous linux mais par "ligne1ligne2" sous cygwin (d'ou les erreurs)
 
donc modifier le makefile de la façon suivante si tu as le même problème
ligne1 \
ligne2

Reply

Marsh Posté le 27-02-2007 à 15:32:24    

Ah la la c'est malin du coup j me suis tapé tout le makefile pour rien... ^^. Bon sinon alors pour le ls il marche.
Donc pour eclaircir le probleme dès qu'on remonte dans les cygdrives (disques virtuels si je comprends bien) ca plante.  
C'est à dire :  


pwd --> /cygdrive/c/
ar x op/op/lib/antlr/src/.libs/libantlr.a --> Marche
cd..
ar x c/op/op/lib/antlr/src/.libs/libantlr.a --> Plante


D'autres idées sur les raisons de ce bug? (ou y a-t-il quelqu'un ici qui pourrait tester voir si c'est une limite de cygwin? ar x ne fait qu'extraire les fichiers d'une archive)

Message cité 1 fois
Message édité par docusland le 27-02-2007 à 15:42:09
Reply

Marsh Posté le 27-02-2007 à 18:35:13    

docusland a écrit :



pwd --> /cygdrive/c/
ar x op/op/lib/antlr/src/.libs/libantlr.a --> Marche
cd..
ar x c/op/op/lib/antlr/src/.libs/libantlr.a --> Plante




 
ça c'est normal, dans le deuxième cas, ar cherche a extraire les fichiers dans le repertoire cygdrive ce qui n'est pas possible.
par contre, si tu fais:
cd /
ar x cygdrive/c/op/op/lib/antlr/src/.libs/libantlr.a
ça devrait marcher (et les fichiers seront extraits à la racine de cygwin, c'est à dire dans le repertoire windows ou cygwin est installé.
 
Sinon pour être bien clair sur ton problème initial:
Si tu fais:
cd /cygdrive/c/op/op/
ar x ../../../c/op/op/lib/antlr/src/.libs/libantlr.a
le fichier n'est pas trouvé alors que si tu fais:
cd /cygdrive/c/op/op/
ls ../../../c/op/op/lib/antlr/src/.libs/libantlr.a
ça ne pose pas de problème, c'est bien ça ?
 
Et aussi, si tu tapes 'mount' ça te renvoie quoi ?

Reply

Marsh Posté le 28-02-2007 à 09:08:48    


cd /
ar x cygdrive/c/op/op/lib/antlr/src/.libs/libantlr.a


Ca ca plante


cd /cygdrive/c/op/op/
ar x ../../../c/op/op/lib/antlr/src/.libs/libantlr.a


Ca ca plante
 


cd /cygdrive/c/op/op/
ls ../../../c/op/op/lib/antlr/src/.libs/libantlr.a


Ca ca marche
 
Et aussi, si je tape 'mount' ça me renvoie :


C:\cygwin\bin on /usr/bin type system (binmode)
C:\cygwin\lib on /usr/lib type system (binmode)
C:\cygwin on / type system (binmode)
c: on /cygdrive/c type system (binmode,noumount)
d: on /cygdrive/d type system (binmode,noumount)
h: on /cygdrive/h type system (binmode,noumount)
j: on /cygdrive/j type system (binmode,noumount)
k: on /cygdrive/k type system (binmode,noumount)
s: on /cygdrive/s type system (binmode,noumount)

Reply

Marsh Posté le 28-02-2007 à 14:04:21    

...bizzare...
J'ai fais des tests avec ar sur mon installation cygwin et pas de problème...
 
Essaye peut-être de réinstaller ar. Dans le setup.exe de cygwin, il est dans le package "binutils" dans la section "devel". Pour ma part, j'ai la version 20060817-1
Sinon essaye aussi d'installer ton programme dans un répertoire plus haut dans l'arborescence afin d'eviter au makefile de remonter jusqu'au repertoire cygdrive... ce serait une façon de contourner le problème.


Message édité par pango le 28-02-2007 à 14:11:50
Reply

Marsh Posté le 28-02-2007 à 17:00:05    

Ah tiens.. on aurait ptet du commencer par la :D J'avais pas la même version d'ar. Pas retrouvé ar dans l'install , mais une nouvelle install toute propre en enlevant toutes les bidouilles de partout semble faire du bien.
Merci pango!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed