3

http://techlogbook.wordpress.com/200...-kubuntu-8-04/にある次のFortranコードをコンパイルしようとしました

program testplplot2d
use plplot
implicit none
real(plflt),dimension(6) :: x,y
real(plflt)::xmin,xmax,ymin,ymax
x=(/1,2,3,4,5,6/)
y=x**2
write(*,*) y
call plinit()
xmin=1.0
xmax=6.0
ymin=1.0
ymax=40.0
call plcol0(1)
call plenv(xmin,xmax,ymin,ymax,0,0)
call pllab('X','Y','Test 1D plot')
call plpoin(x,y,9)
call plline(x,y)
y=x**3
call plpoin(x,y,9)
call plline(x,y)
call plend()

end program testplplot2d

プログラムをコンパイルするために、次のコマンドを使用しました。

gfortran -I/usr/lib/fortran/modules/plplot testplot2d.f90 -o testplot2d

ただし、以下に詳述するリンクエラーメッセージを受け取りました。

/tmp/cckSqEg4.o: In function `MAIN__':
testplot2d.f90:(.text+0x10c): undefined reference to `plinit_'
testplot2d.f90:(.text+0x154): undefined reference to `plcol0_'
testplot2d.f90:(.text+0x181): undefined reference to `plenv_'
testplot2d.f90:(.text+0x1a6): undefined reference to `__plplotp_MOD_pllab'
testplot2d.f90:(.text+0x248): undefined reference to `__plplot_MOD_plpoin'
testplot2d.f90:(.text+0x2e5): undefined reference to `__plplot_MOD_plline'
testplot2d.f90:(.text+0x3c6): undefined reference to `__plplot_MOD_plpoin'
testplot2d.f90:(.text+0x463): undefined reference to `__plplot_MOD_plline'
testplot2d.f90:(.text+0x46d): undefined reference to `plend_'
collect2: ld returned 1 exit status

この問題を修正するにはどうすればよいですか?(私はgfortranのマニュアルページを読みましたが、ライブラリに対してリンクするための正しいオプションを使用していると思います。)

4

3 に答える 3

2

表示されるエラーメッセージは、コンパイラではなくリンカによって生成されます。私はgfortranを知らないので、以下はマークの幅が広いかもしれません

-私は通常(私が精通しているLinuxおよびUnixコンパイラでは)、リンクするときではなく、コンパイルに含めるファイルを含むディレクトリを識別します。Fortranの.mod場合、モジュールのコンパイル時に作成されるファイルは、コンパイル中にインクルードする必要があります。

モジュールが見つからないことを示すエラーメッセージが表示されないためUSE、コンパイラに確認するように指示した場所でモジュールが見つかったことに基づいて作業できます。

私が精通しているLinuxコンパイラーは、-Lフラグ、ディレクトリー、およびライブラリー名の省略形を使用して、リンクするライブラリーを識別します。あなたの場合、私は次のようなものを見ることを期待していました:

-L/path/to/installed/lib/files -lplplot

コンパイルステートメントに含まれています。リンク時にライブラリを含めるようにgfortranに指示する方法はわかりませんが、どのライブラリをリンクするかをgfortranに指示するコンパイルステートメントには何も表示されません。

于 2010-12-06T22:36:42.970 に答える
1

これはubuntuforumsにも投稿しました。ユーザーgmargoは次の解決策を投稿しました:

libplplot-devパッケージをインストールしてから、次のコマンドラインでコンパイルします。

gfortran testplot2d.f90 -o testplot2d $(pkg-config --cflags --libs plplotd-f95)

@belisariusと@High-Performance-Markにご協力いただきありがとうございます。

于 2010-12-07T19:31:05.197 に答える
0

外部参照がありません。

コードを取得したページが始まります。

Kubuntu Adeptパッケージマネージャーからlibplplotをインストールし、「libplplot-fortran9」パッケージを選択しました。

私はあなたが同じことをすべきだと思います。

于 2010-12-06T20:58:36.830 に答える