ich zwei C-Quelldateien haben, prog2.c
und getopts.c
.My prog2.c
und getopts.c
Dateien verknüpft sind, zu jeder other.I die folgende Make-Datei von meiner Aufgabe gemacht Richtung:make: *** [clean] Fehler 1 und keine Regel Ziel Fehler machen
OPTS= -g -c -Wall -Werror
efile = shell
ofile = prog2.o getopts.o
all: gcc -0 $(efile) <$(ofile)>
shell: \
prog2.o getopts.o
gcc prog2.o getopts.o -o shell
prog2.o: \
prog2.c
gcc $(OPTS) prog2.c
getopts.o: \
getopts.c
gcc $(OPTS) getopts.c
clean:
rm $(ofile) $(efile)
die Richtung sagt: für die endgültige Verknüpfung muss ich gcc -o efile <ofiles>
verwenden, wo efile ist die ausführbare Datei (ich glaube, dass hier shell wird) und ofiles ist die Liste aller .o
Dateien. Dann wurde mir gesagt, Befehl make clean
und make
.Für die make clean
Befehl bekomme ich den folgenden Fehler: kann nicht entfernen ... keine Datei oder Verzeichnis Fehler gefolgt von make:***[clean] Error 1.
Wenn ich make
Befehl, bekomme ich den folgenden Fehler: make: *** Keine Regel, um das Ziel 'gcc' zu machen, das von 'all' benötigt wird. Halt. Ich habe einige Webseiten und ähnliche Fragen durchgesehen, aber ich verstehe es wirklich nicht.
die 'gcc -0 $ (efile ...' sollte in der nächsten Zeile sein, mit einer Registerkarte vor - wie es als Abhängigkeiten für 'all' verstanden wird und nicht als ein Befehl, um es zu bauen. Auch , das sollte "-o" nicht "-0" sein – Dmitri
Ich habe aber immer noch denselben Fehler für den make clean-Befehl bekommen, und für makr bekomme ich einige neue Fehler wie: syntex error near expected token für den make-Befehl –
Probieren Sie '$ (ofile)' anstelle von '<$(ofile)>' aus, und der Fehler 'make clean' liegt wahrscheinlich daran, dass die von Ihnen angegebenen Dateien nicht existieren (obwohl 'rm -f' anstatt nur' rm' loswerden sollte) der Fehler) – Dmitri