g++ de sortie: le fichier n'est pas reconnu: format de Fichier non reconnu
Je suis en train de construire un programme avec des fichiers multiples pour la première fois.
Je n'ai jamais eu aucun problème avec la compliling programme avec main.cpp seulement.
Avec les commandes suivantes, c'est le résultat:
$ g++ -c src/CNumber.cpp src/CNumber.h -o src/CNumber.o
$ g++ -c src/CExprPart.cpp src/CExprPart.h -o src/CExprPart.o
$ g++ -c src/CExpr.cpp src/CExpr.h -o src/CExpr.o
$ g++ -c src/main.cpp -o src/main.o
$ g++ src/CNumber.o src/CExprPart.o src/CExpr.o src/main.o -o execprogram
src/CNumber.o: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
Ce qui a pu provoquer une telle erreur et que dois-je faire?
À l'aide de Linux Mint avec gcc (Ubuntu/Linaro 4.7.2-2ubuntu1).
Merci
- C'est un peu bizarre pour inclure les fichiers d'en-tête sur la compilation des lignes de commande comme ça.
- Vous avez raison, c'est le problème. Je vous remercie.
Vous devez vous connecter pour publier un commentaire.
C'est faux:
Vous ne devriez pas "compiler" .h fichiers. Cela permettra de créer un en-tête précompilé des fichiers, qui ne sont pas utilisés pour créer un fichier exécutable.
Le dessus doit simplement être
Similaire pour la compilation de l'autre .fichiers cpp
Je suis tombé sur cette erreur dans la construction de quelque chose - il s'est avéré être due à une version précédente, à défaut lors de la compilation d'un fichier source à un .o fichier - que .o fichier a été endommagé ou incomplet, donc quand j'ai essayé une autre build il a donné cette erreur de fichier. La solution était tout simplement de supprimer la .o fichier (ou d'exécuter
make clean
, si vous avez un makefile avec cette cible).(Ce qui n'a pas beaucoup à voir avec le post original de problème, mais ce fut l'un des premiers succès dans une recherche Google pour l'erreur, il suffit donc de l'ajouter ici).
Essayer de mettre tous les fichiers suivants dans un répertoire:
example.cpp:
my_functions.cpp:
my_functions.h:
Puis tapez ces commandes: