2014-06-20 52 views
0

我正在使用makefile代码(下面),使用Fortran77编译器,它使我满意,但我试图与英特尔Fortran编译器(IFORT)合作使用相同的代码,并且它不能很好地工作。如何使用ifort编译器编写makefile?

任何人都可以提供任何关于改进代码的建议吗?

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 
+2

那么...你尝试了什么?当你尝试它时发生了什么? – MadScientist

+0

你可以添加你正在使用的当前编辑好的makefile到你的文章吗? – casey

回答

2

这是一个非常简单的makefile和所需要的唯一真正的变化是改变f77 = pfg77f77 = ifort。我不确定ifort会不会喜欢-O4选项(O3是ifort文档中的最高级别),所以您可能会改变这一点,以确保您获得优化。

还有两个与makefile无关的问题可能会导致您的问题。

  1. 在命令行上运行的intel编译器要求您运行脚本来设置intel环境。确保您在制作该项目之前正在运行该脚本。在linux上,这是针对64位环境和默认安装路径的source /opt/intel/bin/compilervars.sh intel64

  2. ifort在某些方面可能相当挑剔,拒绝被pgf或gfortran接受的代码。如果适用,您可能需要收紧代码或查找编译器参数以放宽编译器。

要提供超出这些一般性的任何特定帮助,需要提供由编译器或make产生的实际错误。

+0

感谢您提供我的信息。但我仍然无法得到它的工作...当我“make -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 我不知道它是否编译器的问题? – user3758608

+0

@ user3758608这些错误看起来像你弄乱了f77变量(这将有助于看到你正在使用的实际makefile)。第二个错误是由于没有找到编译器。你是否初始化了英特尔环境(请参阅我的答案中的第1项)? – casey