我必须编译Fortran程序,但我还没有设法做到这一点 我不是这个主题的有经验的人,但我试图在makefile中做一些更改,不幸的是问题仍然存在。
原始的makefile是:
CC = cc
F77 = f77
CFLAGS = -g -DSOLARIS -DDEBUG #-DINTEL -DFREEBSD #-DDEBUG
FFLAGS = -g -c
OBJDIR= ../bin
LIB = ./sub/libsaito.a
all: shearSAITOniu shearsaito.li shearsaito shearsaito.2 \
# shearsaito run.saito saito
shearSAITOniu: shearSAITOniu.f ${LIB}
f77 shearSAITOniu.f -e -o ${OBJDIR}/shearSAITOniu -g ${LIB}
shearsaito.li: shearsaito.li.f ${LIB}
f77 shearsaito.li.f -e -o ${OBJDIR}/shearsaito.li -g ${LIB}
shearsaito: shearsaito.f ${LIB}
f77 shearsaito.f -e -o ${OBJDIR}/shearsaito ${LIB}
shearsaito.2: shearsaito.2.f ${LIB}
f77 shearsaito.2.f -e -o ../bin/shearsaito.2 -g ${LIB}
qsaito.li: qsaito.li.f ${LIB}
f77 qsaito.li.f -e -o ${OBJDIR}/qsaito.li ${LIB}
forward: forward.f ${LIB}
f77 forward.f -e -o ${OBJDIR}/forward ${LIB}
#shear3d: shear3d.f ${LIB}
f77 shear3d.f -e -o shear3d ${LIB}
#run.saito: run.saito.f ${LIB}
f77 run.saito.f -o run.saito ${LIB}
#s_saito: s_saito.f ${LIB}
# f77 s_saito.f -o s_saito ${LIB}
然后我在CCFLAGS中用-D_LINUX替换了-DSOLARIS 做完后会出现错误信息:
f77 shearSAITOniu.f -e -o ../bin/shearSAITOniu -g ./sub/libsaito.a
/ usr / bin / f77:非法选项:-e
make:*** [shearSAITOniu]错误255
我不确定此错误消息的含义,但我也尝试用gfortran替换f77编译器并收到此错误:
gfortran shearSAITOniu.f -e -o ./shearSAITOniu -g ./sub/libsaito.a
gfortran:错误:./ shearSAITOniu:没有existe el archivo o el directorio
make:*** [shearSAITOniu]错误1
我认为这个程序最初是在32位机器上编译的,我的是64位,但我不知道这究竟是如何影响的。我希望你能帮助我解决这个问题,谢谢。
答案 0 :(得分:1)
要使用shearSAITOniu
编译程序gfortran
,请使用命令行:
gfortran shearSAITOniu.f -ffree-form -o ./shearSAITOniu -g ./sub/libsaito.a
这将解决错误:
gfortran: error: ./shearSAITOniu: No existe el archivo o el directorio
但不一定是您尚未发现的其他错误。
这就是出错的原因:
-e
是f77
编译器的一个选项
表示:接受扩展长度输入源行。
-o
filename 是f77
和gfortran
编译器的选项
表示:创建输出文件"文件名" 。
-e
symbol 是gfortran
编译器的选项(严格来说,是链接器)
这意味着:制作符号"符号"该计划的切入点。
对于f77
和gfortran
编译器,都会显示一个文件名
在命令行上没有选项-o
的解释
命名输入文件以进行编译或链接。
因此失败的命令行是什么:
gfortran shearSAITOniu.f -e -o ./shearSAITOniu -g ./sub/libsaito.a
表示gfortran
是:编译并链接输入文件 shearSAITOniu.f
,./shearSAITOniu
和 ./sub/libsaito.a
; 在生成的程序中插入调试信息(-g
),
并使符号 -o
成为该计划的切入点。
-o
被解释为选项-e
符号的符号,./shearSAITOniu
被解释为输入文件,它不存在。