你有很多的問題,你的makefile,加上編譯不同.o
文件時,你可以不包括.o
文件。 .o
文件只發送給鏈接器,但使用-c
標誌來ifort告訴它創建一個對象並且不是鏈接它。順便說一句,它會幫助我們理解你的問題,如果你正確地格式化示例:你的空白非常奇怪,使閱讀困難。
我想你想要這樣的東西;這會構建一個名爲「run」的程序。
CC = icc
FC = ifort
FCFLAGS = -O3 -xHost -fno-alias $(INCLUDES)
CFLAGS = -O3 -xHost -fno-alias $(INCLUDES)
LIBS =
INCLUDES =
TARGET = run
OBJS = pi.o timing.o
$(TARGET) : $(OBJS)
$(FC) -o $(TARGET) $(OBJS)
timing.o: timing.c timing.h
$(CC) -c $(CFLAGS) timing.c
pi.o: pi.f90
$(FC) -c $(FCFLAGS) pi.f90
.PHONY : clean
clean:
rm -f *.o
或者,如果你想用化妝的一些花哨的功能,避免打字,你可以使用:
CC = icc
FC = ifort
FCFLAGS = -O3 -xHost -fno-alias $(INCLUDES)
CFLAGS = -O3 -xHost -fno-alias $(INCLUDES)
LIBS =
INCLUDES =
TARGET = run
SRCS = pi.f90 timing.c
timing.o: timing.h
OBJS = $(addsuffix .o,$(basename $(SRCS))
$(TARGET) : $(OBJS)
$(FC) -o [email protected] $^
%.o: %.c
$(CC) -c $(CFLAGS) -o [email protected] $<
%.o: %.f90
$(FC) -c $(FCFLAGS) -o [email protected] $<
.PHONY : clean
clean:
rm -f *.o
這看起來更長的時間,但如果/當你需要添加更多的源文件你所要做的就是把它們放到SRCS變量中(並聲明任何額外的先決條件)。
請務必使用標籤[tag:fortran],並在必要時添加版本以區分您的問題是否具體。例如,你不能使用Fortran 2008,但只能使用Fortran 90. – 2015-12-17 11:48:45