ERREUR: make: *** Pas de règle pour faire de la cible principale.c', nécessaires principale.o'. Arrêter
CC= gcc CFLAGS= -D__XMLSEC_FONCTION__=__FONCTION__ -DXMLSEC_NO_XSLT=1 \ -DXMLSEC_NO_XKMS=1 -I/usr/include/libxml2 -DXMLSEC_CRYPTO_DYNAMIC_LOADING=1 \ -DXMLSEC_CRYPTO=\"openssl\" -DUNIX_SOCKETS -DXML_SECURITY -DDEBUG \ -I/usr/local/include/xmlsec1 -lxmlsec1 LDFLAGS= -lcrypto -I/usr/include/libxml2 -I/usr/local/include/xmlsec1 \ -lxmlsec1 -lprotobuf-c valeur par défaut: shr #pb est synonyme de protobuf fichier shr: principal.o fichier2.o fichier3.pb-c.o $(CC) $(CFLAGS) -o shr principal.o fichier2.o fichier3.pb-c.o principal.o: main.c en-tête.hfile2.h fichier3.h $(CC) $(CFLAGS) -c main.c fichier2.o: fichier2.c fichier2.h $(CC) $(CFLAGS) -c axisuid_auth.c fichier3.pb-c.o: fichier3.pb-c.c fichier3.h $(CC) $(CFLAGS) -c fichier3.c nettoyer: $(RM) shr *.o *~
- Vous n'avez pas de fichier nommé
main.c
dans le répertoire dans lequel vous travaillez. - tous les .c & .h les fichiers sont dans le dossier src.
make
ne pas obtenir quelque chose de mal. Si elle se plaint d'un fichier manquant, puis sur il y a un fichier manquant.- Utilisation
remake -x
pour déboguer votreMakefile
. Je soupçonne que vous n'êtes pas en cours d'exécutionmake
dans lesrc
répertoire. Ou de la mentionsrc/main.c
etc... (avec lesrc/
répertoire donné explicitement) dans leMakefile
- s/il y a un fichier manquant/il n'y a pas un fichier où vous avez dit
make
il est/ - Vérifiez que vous utilisez ONGLETS correctement, plutôt que de les espaces.
- Aussi, ajouter
-Wall
à votreCFLAGS
. De demander à tous les avertissements de votre compilateur est toujours utile. - C'est un bêtement agressive utilisation de downvoting à l'encontre d'un nouvel utilisateur. Évidemment il y a un
main.c
et il n'est pas d'être pris pour quelque raison que ce soit. Ne vous contentez pas jeter le message d'erreur de retour à la mec. - après le débogage à l'aide de remake : par défaut le fichier n'existe pas
- prenez le temps de lire à nouveau le make de GNU de documentation gnu.org/software/make/manual/html_node/index.html ; il y est quelque chose de fondamental sur
make
que vous ne comprenez pas, donc vous ne donnez pas assez d'informations pertinentes (ce que votre arborescence des sources de la structure? à partir de quel répertoire vous exécutezmake
, etc...) pour nous permettre de vous aider. - J'ai tendance à être en désaccord avec votre opinion contre la baisse de vote. La question est très mal formulée, et ne donnent pas assez d'indices pour tout
make
d'experts pour répondre. (C'est pourquoi je downvoted la question, mais je l'ai fait essayer à fournir de l'aide thru commentaires).
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez dit, tous les .c et .h les fichiers sont dans dossier src. Donc dans ce cas dans votre Makefile, il faut l'indiquer comme src/main.c
Makefile
doit mentionner explicitement chaquesrc/*.c
src/*.h
fichier. Sinon, envisager de mettre laMakefile
ensrc/
et en cours d'exécutionmake
de l'intérieursrc/
répertoire.