0

Lahey Fortran を使用して、Windows マシンで 90 年代初頭に最後にコンパイルされた fortran コードをコンパイルしようとしています。現在、ubuntu 64x で gfortran を使用してコンパイルしています。

次のエラーが表示されます

$ gfortran 3RINGS.FOR /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xc10): mmbsk1 への未定義参照' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xc6a): mmbsi1 への未定義_mmbsk0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xc3d): undefined reference to参照' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xcc4): mmbsk1 への未定義参照' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xd1e): mmbsi1への未定義参照' /tmp/ ccjCDh8B.o:3RINGS.FOR:(.text+0x1182): mmbsi0 への未定義参照' collect2: ld が 1 終了ステータスを返しました_mmbsi0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xc97): undefined reference to_mmbsk0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xcf1): undefined reference to_mmbsi0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0xd4b): undefined reference to_mmbsk0_' /tmp/ccjCDh8B.o:3RINGS.FOR:(.text+0x11a5): undefined reference to

エラーは、コード内の次の変数宣言に関するものです

REAL*8 MMBSK0,MMBSK1,MMBSI0,MMBSI1

この問題を解決し、このコードをコンパイルするための提案をいただければ幸いです。必要に応じて、コード全体 (263 行) を喜んでアップロードします。

4

1 に答える 1

0

(問題とは関係ありません。REAL*8 は標準 Fortran の拡張であることに注意してください。正しい構文は REAL(8) であり、「8」の意味はコンパイラによって異なります。)

コンパイラは、それらの MM... 名が変数ではなく関数を宣言していると考えます。通常、名前がコード内で後で使用される方法に基づいて、名前が関数を参照していると推測します。

あなたのプログラムには、単一のソース ファイルよりも多くのものがあると思います。おそらく、コンパイルしてメイン プログラムにリンクする必要がある他のソース ファイルです。

于 2013-05-24T02:51:55.500 に答える