Как написать makefile с помощью компилятора ifort?

Я использовал код make-файла (ниже), с компилятором Fortran77 он работал, к моему удовлетворению, но я попытался использовать тот же код в партнерстве с компилятором Intel Fortran (IFORT), и он совсем не работает.

Может ли кто-нибудь предложить какие-либо предложения по улучшению кода?

OBJ = change.o twopt.o ddmath.o cklib.o
f77 = pgf77 
opt = -O4        
.f.o:   
        $(f77) $(opt) -c $*.f
stagdri: $(OBJ)
        pgf77  -o change.exe $(OBJ)
        strip change.exe

person user3758608    schedule 20.06.2014    source источник
comment
Ну... что ты пробовал? И что случилось, когда вы попробовали это?   -  person MadScientist    schedule 20.06.2014
comment
Можете ли вы добавить текущий отредактированный make-файл, который вы используете, к своему сообщению?   -  person casey    schedule 22.06.2014


Ответы (1)


Это довольно простой make-файл, и единственное реальное изменение, которое требуется, это заменить f77 = pfg77 на f77 = ifort. Я не уверен, что ifort понравится параметр -O4 (O3 — это самый высокий уровень в документации для ifort), поэтому вы можете изменить его, чтобы убедиться, что вы получаете оптимизацию.

Есть еще две проблемы, не связанные с make-файлом, которые могут вызвать у вас проблемы.

  1. Компиляторы Intel, работающие в командной строке, требуют запуска сценария для настройки среды Intel. Перед созданием проекта убедитесь, что вы запускаете этот скрипт. В Linux это source /opt/intel/bin/compilervars.sh intel64 для 64-битной среды и пути установки по умолчанию.

  2. ifort может быть довольно придирчивым в некоторых отношениях и отклонять код, который принимается pgf или gfortran. Возможно, вам придется усовершенствовать свой код или найти аргументы компилятора, чтобы ослабить компилятор, где это применимо.

Чтобы предоставить какую-либо конкретную помощь помимо этих общих сведений, необходимо указать фактические ошибки, создаваемые компилятором или командой make.

person casey    schedule 20.06.2014
comment
Спасибо за мою информацию. Но я все еще не могу заставить его работать... когда я делаю -f makexx, он показывает сообщение: O4 -c check.f make: O4: Команда не найдена make: [check.o] Ошибка 127 (игнорируется) ifort - o check.exe check.o twopt.o ddmath.o cklib.o make: ifort: Команда не найдена make: *** [stagdri] Ошибка 127 Я не знаю, проблема ли это в компиляторе? - person user3758608; 22.06.2014
comment
@user3758608 user3758608 Эти ошибки выглядят так, будто вы перепутали переменную f77 (это поможет увидеть фактический make-файл, который вы используете). Вторая ошибка связана с тем, что не найден компилятор. Вы инициализировали среду Intel (см. пункт № 1 в моем ответе)? - person casey; 22.06.2014