Nichts zu tun ist für die "Makefile"
Ich soll schreiben ein Makefile für ein Projekt, das ich tun müssen. Ich habe alles gemacht aber wenn ich versuche, es zu tun, ich bekomme die folgende Ausgabe:
machen: Nichts zu tun für `Makefile'
Was könnte die Ursache sein?
Hier ist mein Makefile-Datei:
###########################################################
# Makefile for XXXXX
# name1, name2
# account1, account2
###########################################################
EXEC = a1
CC = /opt/SUNWspro/bin/cc
$(EXEC):
$(CC) -o $(EXEC) a1.cpp a1.h a1.sic
rm -f *.o
clean:
rm -f *.o core diss $(EXEC)
#######################[ EOF: Makefile ]###################
Bearbeiten:
Dank eines freundlichen user ich weiß jetzt, was passiert ist.
Nun habe ich die folgende Ausgabe
/opt/SUNWspro/bin/cc -o a1 a1.cpp a1.h a1.sic
ld: fatal: file a1.cpp: unknown file type
ld: fatal: file processing errors. No output written to a1
make: *** [a1] Error 2
Können Sie bitte helfen?
Sie versuchen, kompilieren von C++ code mit einem C-compiler; dies funktioniert nicht gut. Verwenden Sie einen C++ - compiler, wahrscheinlich
Der professor fragte uns zu jeder Datei. Ein
Gut, wenn die
Ein makefile automatisiert die Aufgaben, die Sie sonst führen Sie von der Befehlszeile aus. Also, bevor Sie schreiben Sie ein makefile, etwas zu tun, Sie müssen wissen, wie Sie es tun, ohne ein makefile. Versuchen Sie, bauen Sie
/opt/SUNWspro/bin/CC
(alle caps). Sie nicht Liste normalerweise in den header-Dateien auf der compiler-Kommandozeile. Und ich bin mir nicht sicher, wer weiß, was für ein .sic
- Datei ist.Der professor fragte uns zu jeder Datei. Ein
.sic
- Datei ist für einen assembler verwenden wir.Gut, wenn die
.sic
- Datei übersetzt wird, die für Sie, in Ordnung. Die .h
Datei sollte wohl nicht auf der Kommandozeile. Es gibt eine chance, es kann erkannt werden und unschädlich gemacht, aber wenn es ein problem mit nicht erkanntem Dateityp für a1.h
, dann wissen Sie, es war nicht OK. Ich habe nicht gesehen .sic
verwendet für assembler. Wenn die Sun-compiler erkennt es, ist das Super. Wenn nicht, haben Sie einige Arbeit zu tun, die im makefile (möglicherweise hinzufügen von Regeln für die Konvertierung .sic
assembler zu .o
Objekt-Dateien.Ein makefile automatisiert die Aufgaben, die Sie sonst führen Sie von der Befehlszeile aus. Also, bevor Sie schreiben Sie ein makefile, etwas zu tun, Sie müssen wissen, wie Sie es tun, ohne ein makefile. Versuchen Sie, bauen Sie
a1
mit einem Befehl wie cc -o a1 a1.cpp a1.sic
, und versuchen Sie nicht, schreiben Sie ein makefile, bis das perfekt funktioniert.InformationsquelleAutor Julio Garcia | 2013-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Geben Sie
make Makefile
aus irgendeinem Grund? Nicht. Geben Sie einfachmake
.make a1
odermake -f Makefile
für Ihre situation, auch, aber warum die Mühe mit dem extra eingeben?Nebenbei, es ist ein bisschen seltsam zu zählen-header-Dateien auf Ihrem kompilieren Linie. Auch Ihr makefile nicht angeben, Abhängigkeiten, welche Art von ist der ganze Grund, ein in Erster Linie...
Edit: um die Antwort auf Ihre neue Frage, nicht kompilieren von C++ code mit einem C-compiler. Das heißt, ich bin nicht sicher über die link-Fehler, den Sie hier bekommen. Ist
a1.cpp
keine normale source-Datei (Typfile a1.cpp
um das herauszufinden)?Es scheint, wie Sie sind mit sehr grundsätzlichen Problemen. Vielleicht beginnend mit einem guten Anfänger Buch wäre sinnvoll?
Überprüfen Sie heraus die
make
Handbuch. Es hat alles, was Sie brauchen, um wissen.Da der C-compiler nicht weiß, was zu tun mit der
.cpp
- Datei (oder die.h
- Datei oder die.sic
Datei übergibt Sie an den Lader, ohne zu kompilieren. Der loader nicht weiß, was mit Ihnen zu tun und beschwert sich, dass er nicht weiß, was ein.cpp
Datei ist entweder.InformationsquelleAutor Carl Norum