Я написал небольшой фрагмент кода, пытаясь придерживаться стандарта Fortran 2003. Код available on github.Исправить суффикс для исходного файла Fortran 2003 - компилятор Intel Fortran
Это мой Makefile:
FC = gfortran
FLGS = -g -pg -std=f2003 -I. -fbounds-check
DEPS = camx.prm
OBJ = unit-test-hadvppm.o hadvppm.o
#linker macro
%.o: %.f03 $(DEPS)
$(FC) -c -o [email protected] $< $(FLGS)
#build targets
gnu-amd64-linux: $(OBJ)
$(FC) -o [email protected] $^ $(FLGS)
clean: gnu-amd64-linux
rm *.o
Код компилируется без проблем, используя вышеупомянутую Makefile и gfortran.
Однако, если я пытаюсь скомпилировать его с iFort, используя только
ifort -o ifort-amd64-linux unit-test-hadvppm.f03 hadvppm.f03
он не работает, смотрите вывод ниже. Я полагаю, что это связано с бесплатным файловым форматом .f03. Есть ли флаг в iFort, похожий на флаг gstran -std = f2003? Я пытался найти это в документации iFort, должен ли я выглядеть сложнее?
Почему бы просто не переименовать ваши файлы в '* .f90' или' * .F90'? Окончание файла не должно зависеть от стандарта ;-) Я в основном код в Fortran 2003/2008 и * always * use '* .F90'. У меня были проблемы с некоторыми компиляторами при использовании' * .F03' несколько лет назад, которые исчезли после переименования файлов. –
@AlexanderVogt спасибо, я попробую! – seb
Возможно, стоит отметить, что несколько компиляторов для Linux (включая ifort) по умолчанию интерпретируют расширение '.F90' как файлы, которые должны быть переданы в препроцессор. Конечно, дело в том, следует ли использовать только расширение верхнего регистра или и то, и другое. – sigma