fortran编译错误与真* 8

时间:2013-05-24 02:46:20

标签: fortran

我正在尝试编译一个fortran代码,该代码最后是在90年代早期使用Lahey Fortran在Windows机器上编译的。现在,我正在ubuntu 64x上使用gfortran进行编译。

我收到以下错误

$ gfortran 3RINGS.FOR /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xc10):对_mmbsk0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xc3d): undefined reference to mmbsk1 '的未定义引用 /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xc6a):对_mmbsi0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xc97): undefined reference to mmbsi1 '的未定义引用 /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xcc4):对_mmbsk0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xcf1): undefined reference to mmbsk1 '的未定义引用 /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xd1e):对_mmbsi0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xd4b): undefined reference to mmbsi1 '的未定义引用 /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0x1182):对_mmbsk0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0x11a5): undefined reference to mmbsi0 '的未定义引用 collect2:ld返回1退出状态

该错误与代码

中的跟随变量声明有关
REAL*8 MMBSK0,MMBSK1,MMBSI0,MMBSI1

我将不胜感激任何解决此问题的建议并编译此代码。 如果有人需要,我会很乐意上传整个代码(263行)。

1 个答案:

答案 0 :(得分:0)

(与您的问题无关 - 请注意,REAL * 8是标准Fortran的扩展。正确的语法是REAL(8),其中“8”的含义取决于您的编译器。)

编译器认为那些MM ...名称声明函数,而不是变量。它通常推断出一个名称引用了一个函数,该函数基于稍后在代码中使用该名称的方式。

我猜你的程序比单个源文件还要多 - 可能是你需要编译并链接到你的主程序的其他源文件。