Je suis en train d'exécuter un simple maquillage sans problèmes: Les fichiers sont dans le répertoire du projet principal: p> alors je essayé d'organiser les fichiers et de mettre des choses comme: p> et des sous-répertoires supplémentaires: p> alors la nouvelle version du makefile: p> Je compose du linux à l'aide de EMACS avec le compilateur GCC: p> alors, je cours sur emacs: p> et il donne le message: p> Quelle règle doit être manquante à être incluse dans le maquillage Fichier? P> Tous les commentaires et suggestions sont très appréciés. P> Merci pour votre suggestion, il est ajouté au code. Ensuite, le compilateur se plaint: p> une autre suggestion? P> Merci d'avance! P> P>
3 Réponses :
Pour corriger l'erreur changer cette ligne: p> à: p> Ceci crée une règle pour Tous les objets de la faire: *** Aucune règle pour rendre la cible 'obj / hellomake.o', nécessaire par "Hellomake". Arrêtez. Code>
$ (obj) code> variable. Le deuxième paramètre ('
$ (ODIR) /% /%. O code>') extrait le nom du fichier du chemin complet afin de passer uniquement le nom du fichier sur le troisième paramètre ('
src /% .c code> '). p> p>
Bonjour Ryan. Vous avez raison .. Les fichiers manquaient dans le "SRC /". Je supprime aussi ".." comme vous l'avez suggéré. Mais une erreur est partie: FAIT: *** Aucune règle pour faire la cible /include/hellomake.h ', nécessaire par code> obj / hellomake.o'.
Supprimer le début / de l'inclure. Cela / dit au maquillage de regarder dans le répertoire racine du système de fichiers au lieu de votre dossier de projet.
Ryan merci encore! J'ai enlevé le "/". L'une erreur restante est partie. Ensuite, dans (GDB) Exécuter ... donne: {{(gdb) Exécuter le programme de démarrage: aucun fichier exécutable spécifié. Utilisez la commande "Fichier" ou "Exec-File".}}
Aucun problème! Je pense que vous feriez mieux de faire un nouveau post sur votre problème de GDB.
OK. Maintenant j'essaie un autre exemple trouvé ici [ Comment puis-je créer un makefile pour les projets C avec des sous-répertoires SRC, Obj et bin? ] et voici ici:
make -k /usr/bin/ld: cannot open output file /bin/hi.sh: Permission denied collect2: ld returned 1 exit status make: *** [bin/bin/hi.sh] Error 1
Même si cela est d'ans, votre problème est simplement que creadpath code> n'est pas défini et donc
$ (cible) / $ (cible) code> dans la liaison va se résoudre à
/ bin code>.
Je pense que vous devriez changer cette ligne
$(ODIR)/%.o : %.c $(DEPS)
Votre réponse pourrait être améliorée avec des informations justificatives supplémentaires. S'il vous plaît Modifier Pour ajouter des détails supplémentaires, tels que des citations ou une documentation, de sorte que d'autres puissent confirmer que votre réponse est correcte. Vous pouvez trouver plus d'informations sur la façon d'écrire de bonnes réponses dans le centre d'aide .
projet / obj code> serait un TAD plus sensible que
Project / src / obj code>
Bonjour Steve-o. Merci! J'ai fait le changement que vous avez suggéré.