2017-06-03 8 views
0

Ich habe das folgende Makefile. Es funktioniert gut für .f und .c Dateien, aber wenn ich .f90 Datei habe und es mit ifort kompilieren will nicht funktioniert? Könntest du mir bitte raten, wo ich mich ändern soll und wie? Dank SieKeine Regel, um Ziel f1.o zu machen, benötigt von f90_simple

FCOMPFLAGS = -O -ffixed-line-length-132 
CCOMPFLAGS = -O   

FFLAGS  = $(FCOMPFLAGS) -fsecond-underscore 
CFLAGS  = $(CCOMPFLAGS) 
LDFLAGS  = $(FCOMPFLAGS) 

LD   = gfortran 
FC   = gfortran 

MAKEFILE  = Makefile 
PROGRAM1  = f1 

OBJS   = f1.o  \ 
        f2.o  \ 
        f3.o      

all:  $(PROGRAM1)  

$(PROGRAM1): $(OBJS) $(MAKEFILE) 
    $(LD) $(LDFLAGS) $(OBJS) -o $(PROGRAM1) 

clean:   @rm -f $(OBJS) core 

wenn ich ausführen „make“ ich folgende Fehlermeldung erhalten,

make: *** No rule to make target `f1.o', needed by `f90_simple'. Stop. 

Es scheint, dass mein Make-Datei nicht * .f90 Dateien nicht erkennt, und meine andere Frage ist, wir haben Flagge für ifrot Compiler in Make-Datei verwendet werden Dank

+0

Da Sie keine Angaben darüber gemacht haben, welche Änderungen Sie vorgenommen haben, um 'ifort' zu verwenden, noch Angaben zum Problem gemacht haben (_does funktioniert_ ist keine nützliche Problembeschreibung), können wir Ihnen nichts helfen . – MadScientist

+0

@ MadScientist Vielen Dank für Ihre Antwort, aber wenn ich f1.f und f2.f und f3.f und verwenden Sie es funktioniert. das selbe für die Dateien f1.f90 und f2.f90 und f3.f90 funktioniert nicht. Könnten Sie mir bitte sagen, wie ich es beheben kann, oder meine Frage deutlicher machen? –

+0

Sie sollten ein Beispiel für den von Ihnen eingegebenen Befehl anzeigen und die Ausgabe anzeigen, die Sie erhalten haben, und erklären, warum Sie denken, dass sie falsch ist. Bitte schneiden und einfügen, anstatt Fehlermeldungen zu paraphrasieren. "Funktioniert nicht" könnte eine Million Dinge bedeuten: Der Compiler wird möglicherweise nicht gefunden, Ihr Quellcode wird möglicherweise nicht gefunden, es können Fehler in Ihrem Code auftreten, Sie befinden sich möglicherweise im falschen Verzeichnis, Sie müssen möglicherweise zusätzliche Bibliotheken installiert haben könnte nicht genügend Speicherplatz haben, könnte Ihr Computer spontan neu starten ... wir haben keine Ahnung und ohne zu wissen, was Ihr Problem ist, wie können wir Ihnen helfen, es zu lösen? – MadScientist

Antwort

1

Sie müssen die implizite Regel hinzuzufügen:

%.o : %.f90 
<tab>$(FC) $(FCOMPLAGS) -c $< 
+0

@ Jack noch eine Frage, warum die Zeile sauber: @rm -f $ (OBJS) Kern funktioniert nicht für mich * .o Dateien werden nicht gelöscht werden? Könntest du das bitte für mich erklären? –

+0

Setzen Sie 'clean:' auf eine Zeile und auf die Zeile darunter, haben Sie ' @rm -f $ (OBJS) core'. – Jack

+0

@ Jack und dann jedesmal sollte ich sauber machen ?? Gibt es eine Möglichkeit, es automatisch zu machen? –

Verwandte Themen