-
Eclipse - MinGW - G++
Bonjour à tous,
Je travaille depuis peu sur Eclipse et utilise gcc/g++ avec MinGW pour compiler mes projets.
Voici mon souci :
Lors de l'étape de linkage des fichiers objets, pour des gros projets, le compilateur m'affiche l'exception suivante:
Citation:
g++: bad number file
Il s'avère que la commande passée en argument est trop longue. Le Makefile n'est pas une alternative fiable puisque le problème vient de gcc/g++ (Même erreur en passant par un Makefile).
Est-il possible de passer un fichier en argument à gcc/g++ pour éviter que le nombre d'arguments soit trop important ?
Est-il possible que le problème vienne de MinGW car je ne jamais eu ce genre de problème sous Unix avec gcc/g++?
Merci beaucoup par avance,
Pierre-Charles PALLIN
-
Bonjour,
Je crains que le problème ne vienne de Windows qui propose une taille limitée quand aux paramètres d'une ligne de commande (donc problème aussi bien sous Eclipse que sous make).
Il m'est arrivé de contourner ce problème en rapprochant le plus possible mon workspace du lecteur racine afin de raccourcir la ligne de paramètres...
Sinon, une solution plus lourde consiste à découper le projet en plusieurs bibliothèques statiques (la commande ar étant disponible dans la suite MinGW) puis d'utiliser les options -L et -l du linker pour les lier dans le binaire final.
@+
-
Bonjour,
Merci de votre réponse.
Je me doutais que Windows était à l'origine de ça...C'est très ennuyeux qu'on ne puisse pas détourner le problème en utilisant le bash de MinGW. Je vais essayer d'aller plus en profondeur dans Windows pour trouver une solution.
La solution des libraries est très bien pensé mais le problème est que je travaille pour une entreprise et non pour moi donc cette solution ne me semble pas viable pour l'équipe de développement.
Quoiqu'il en soit merci et à bientôt.
Cordialement,
Pierre-Charles
-
Bonjour,
As-tu utilisé l'option qui permet de donner des chemins de recherche pour les DLL ? Ca te permet d'éviter de t'embêter avec le chemin pour chacune.
Une solution peut être de lier dynamiquement les DLL, du coup les chemins sont dans ton code et plus du tout dans le make.
En plus si la DLL est dans le schéma de recherche tu peux te passer du chemin.