0

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

我收到以下错误

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

错误与代码中的变量声明有关

REAL*8 MMBSK0,MMBSK1,MMBSI0,MMBSI1

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

4

1 回答 1

0

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

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

我猜你的程序比单个源文件更多 - 也许你需要编译和链接到你的主程序的其他源文件。

于 2013-05-24T02:51:55.500 回答