[英]Problems compiling FORTRAN program
我必須編譯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進行了更改,將-DSOLARIS替換為-D_LINUX。
完成后顯示錯誤消息:
f77剪切SAITOniu.f -e -o ../bin/shearSAITOniu -g ./sub/libsaito.a
/ usr / bin / f77:非法選項:-e
制作:*** [shearSAITOniu]錯誤255
我不確定此錯誤消息的含義,但我也嘗試用gfortran替換f77編譯器並得到此錯誤:
gfortran剪切SAITOniu.f -e -o ./shearSAITOniu -g ./sub/libsaito.a
gfortran:錯誤:./ shearSAITOniu:不存在任何檔案導演
制作:*** [shearSAITOniu]錯誤1
我認為該程序最初是在32位計算機上編譯的,而我的程序是64位的,但是我不知道這會如何影響。 希望您能幫助我解決此問題。
要使用gfortran
編譯程序shearSAITOniu
,請使用命令行:
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
編譯器的選項,這意味着: 創建輸出文件“ filename” 。
-e
符號是gfortran
編譯器的一個選項(嚴格來說是鏈接器),其含義是: 使符號“ symbol”成為程序的入口點 。
對於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
被解釋為輸入文件,該文件不存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.