Pb sur un petit bout de code

Bonjour,

j’ai créé 4 fichiers (bonjour.h, bonjour.c, main. et un makefile). Comme leur nom l’indique le code que je vais écrire doit juste affiché bonjour.

bonjour.h

#ifndef H_BONJOUR #define H_BONJOUR void Bonjour(void); #endif

bonjour.c

[code]#include <stdio.h>
#include <stdlib.h>

void Bonjour(void)
{
printf(“bonjour\n”);
}
[/code]

main

[code]#include <stdio.h>
#include <stdlib.h>
#include “bonjour.h”

int main(void)
{
Bonjour();
return 0;
}[/code]

makefile

[code]CC=gcc
CFLAGS=-W -Wall -ansi -pedantic
LDFLAGS=
EXEC=bonjour

all: $(EXEC)

bonjour: bonjour.o main.o
gcc -o $@ $^ $(LDFLAGS)

%.o: %.c
gcc -o $@ -c $ $(CFLAGS)

main.o: bonjour.h

clean:
rm -rf *.o

mrproper:
rm -rf $(EXEC)
[/code]

mais apparemment cela ne marche pas car lorsque je fait un make all (qui doit appelé mon code et créé le programme bonjour (que je lance en faisant $ ./bonjour)je me retrouve avec:

[code]USER@debian:~/Documents$ ls
bonjour.c bonjour.h main.c Makefile Makefile~

USER@debian:~/Documents$ make all
gcc -o bonjour.o -c -W -Wall -ansi -pedantic
gcc: fatal error: no input files
compilation terminated.
make: *** [bonjour.o] Erreur 4

[/code]

J’aimerais bien savoir où est l’erreur et comment la corriger surtout.

Merci.

Tu as une erreur de copier/coller.

je ne suis pas un expert en Makefile, mais j’aurai plutôt fait comme ça:

[code]CC=gcc
CFLAGS=-W -Wall -ansi -pedantic
LDFLAGS=
EXEC=bonjour

all: $(EXEC)

bonjour: bonjour.o main.o
$(CC) -o $@ $^ $(LDFLAGS)

bonjour.o: bonjour.c
$(CC) -o $@ -c $< $(CFLAGS)

main.o: main.c bonjour.h
$(CC) -o $@ -c $< $(CFLAGS)

clean:
rm -rf *.o

mrproper:
rm -rf $(EXEC)[/code]

Effectivement,

il me fallait mettre les “<” après les $

[code]%.o: %.c
$(CC) -o $@ -c $< $(CFLAGS)

main.o: main.c bonjour.h
$(CC) -o $@ -c $< $(CFLAGS)[/code]

ainsi que la ligne complète main.o: main.c bonjour.h.

Comme quoi, même dans les bouquin il y a des erreurs.

Merci.