당신은 당신의 메이크에 문제의 번호를 가지고 있고, 게다가 다른 .o
파일을 컴파일 할 때 당신은 .o
파일을 포함 할 수 없습니다. .o
파일은 링커에게만 보내지 만 ifort에 대한 플래그는 -c
을 사용하여 객체를 생성하고 이 아니고이 링크됩니다. BTW, 예를 제대로 형식화하면 질문을 이해하는 데 도움이됩니다. 공백 문자는 읽기가 어려워서 이상합니다.
나는 이런 식으로하고 싶다고 생각합니다. 이것은 "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]을 사용하고 질문이 구체적이라는 것을 구별하기 위해 필요한 경우에만 버전을 추가하십시오. 예를 들어 포트란 2008을 사용할 수는 없지만 포트란 90 만 사용할 수 있습니다. –