我从我的合作者那里得到了一组 Fortran 代码。其中makefile
有一行如下。
CPPFLAGS = $(DEF_FLAGS) -DINTEL
因为当我make
在终端中使用命令编译 Fortran 代码时,出现了一些错误消息,我的合作者认为这可能是因为我的 c 预处理器不是来自英特尔。因此,-DINTEL
需要用正确的 c 预处理器名称替换该标志。
我的问题是在这种情况下如何确定正确的 c 预处理器标志?
我在 Windows 10 笔记本电脑上使用 Oracle VM Virtual Box 运行 Ubuntu(64 位)。
更新
make
下面是我在终端中使用该命令后收到的错误消息。删除-DINTEL
标志会导致相同的错误消息。
/usr/bin/cpp -DSPHERICAL -P -C -traditional -DINTEL ptraj.f > ptraj.F90
gfortran -c -O3 -fno-range-check -I /usr/include ptraj.F90
ptraj.F90:1447:132:
1447 | EP(IP)),KHL(NODES(1),IK),KHSMTH1(NODES(1),IK),DKHSP(NODES(1),IK)
| 1
Error: Line truncated at (1) [-Werror=line-truncation]
ptraj.F90:1447:132:
1447 | EP(IP)),KHL(NODES(1),IK),KHSMTH1(NODES(1),IK),DKHSP(NODES(1),IK)
| 1
Error: Expected array subscript at (1)
ptraj.F90:2628:17:
2628 | NODESX = VX(NODES)
| 1
Warning: Legacy Extension: REAL array index at (1)
ptraj.F90:2629:17:
2629 | NODESY = VY(NODES)
| 1
Warning: Legacy Extension: REAL array index at (1)
ptraj.F90:2710:7:
2710 | CONC(NODES,ZL) = CONC(NODES,ZL) + WEIGHTS / (DELTAZ + 1.0E-20)
| 1
Warning: Legacy Extension: REAL array index at (1)
ptraj.F90:2710:24:
2710 | CONC(NODES,ZL) = CONC(NODES,ZL) + WEIGHTS / (DELTAZ + 1.0E-20)
| 1
Warning: Legacy Extension: REAL array index at (1)
ptraj.F90:1400:76:
1400 | CALL INTERP_KV(1,HOST(IP),PDXN(IP),PDYN(IP),PDZN(IP),KPZ,KPPZ,KHR1,KPP,DELZ)
| 1
Warning: Rank mismatch in argument ‘kp’ at (1) (rank-1 and scalar) [-Wargument-mismatch]
ptraj.F90:1428:95:
1428 | (1,HOST(IP),PDXN(IP),PDYN(IP),PDZN(IP),HP(IP),EP(IP),KHSMTH1,DKHSP,KHR1,DKHR1)
| 1
Warning: Rank mismatch in argument ‘khout’ at (1) (rank-1 and scalar) [-Wargument-mismatch]
f951: some warnings being treated as errors
make: *** [makefile:121: ptraj.o] Error 1
更新2
我添加了-ffixed-line-length-none
标志,终端显示警告:
cc1: warning: unknown register name: line-length-none
我添加了-ffree-line-length-none
标志,终端显示警告:
cc1: warning: command line option ‘-ffree-line-length-none’ is valid for Fortran but not for C