我正在尝试编译一个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行)。
答案 0 :(得分:0)
(与您的问题无关 - 请注意,REAL * 8是标准Fortran的扩展。正确的语法是REAL(8),其中“8”的含义取决于您的编译器。)
编译器认为那些MM ...名称声明函数,而不是变量。它通常推断出一个名称引用了一个函数,该函数基于稍后在代码中使用该名称的方式。
我猜你的程序比单个源文件还要多 - 可能是你需要编译并链接到你的主程序的其他源文件。