Makefiles nennt man ueblicherweise 'Makefile' (mit Grossem M und ohne .c), sie sind ja schliesslich kein C-Code (der ja ueblicherweise die Endung .c traegt.)
Zum Makefile selbst:
Die -o Optionen bei den gcc Kompilierbefehlen sind nicht so ganz richtig, -o bedeutet, er soll das [O]utputfile so nennen.
kompiliert also 'gar nichts', und nennt es main.c.
Die richtige Syntax waere:
Code:
gcc -optionen -o outputname.o sourcefile.c
also in Deinem Fall:
Code:
gcc -g -o main.o main.c
jetzt wird main.c kompiliert und das kompilierte wird main.o genannt.
Das Makefile sieht dann geaendert etwa so aus:
Code:
programm: main.o einausgabe.o berechnung.o
gcc -g -o programm main.o einausgabe.o berechnung.o
main.o: main.c headerdatei.h
gcc -g -o main.o main.c
einausgabe.o: einausgabe.c headerdatei.h
gcc -g -o einausgabe.o einausgabe.c
berechnung.o: berechnung.c headerdatei.h
gcc -g -o berechnung.o berechnung.c
(Einrueckung mit TAB! nicht mit Leerzeichen)
Wenn Du noch ein Target namens clean hinzufuegst
Code:
clean:
rm -f programm main.o einausgabe.o berechnung.o
kannst Du mit
alle moeglichen Binaries und Object-files loeschen, und den Kompiliervorgang 'wirklich' von vorn beginnen, falls Du an einer der Sourcen was aenderst (das sollte eigenltich auch so gehen, aber ich habe schon Pferde *selbstzensiert* gesehen

make clean ist auf jeden Fall recht nuetzlich

)
Und zu guter letzt noch einen Link:
gmake Tutorial
Viel Glueck, gruesse, kerri