vine-users ML アーカイブ



[vine-users:072681] linker error on clapack

  • From: <xmhdy897@xxxxxxxxxxx>
  • Subject: [vine-users:072681] linker error on clapack
  • Date: Wed, 17 Aug 2005 22:50:09 +0900 (JST)
宮崎です。

数値計算ライブラリ clapack に関する質問です。
適当な ML が見つからないので、Vine-ML に投稿します。

clapack をインストールしたのですが、自作のプログラムを
コンパイルしようとすると、シンボルが未解決だと怒られます
。
(pc は、intel cerlon 800Mhz です。)

/usr/local/bin/gcc-3.3.2 -DDEBUG -g -o test1 -Wall
-L/usr/local/lib/atlas/Linux_PIIISSE1
-L/usr/local/lib/clapack -llapack -lcblaswr -lcblas
-latlas -lF77 -lm -lefence test1.c
/tmp/ccywYycf.o(.text+0x0): In function `main':
/home/Miyazaki/physics/one-dim/effective_potential/test/test1.c:6:
multiple definition of `main'
/usr/local/lib/clapack/libF77.a(main.o)(.text+0x0): first
defined here
/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld:
Warning: size of symbol `main' changed from 239 in
/usr/local/lib/clapack/libF77.a(main.o) to 217 in
/tmp/ccywYycf.o
/usr/local/lib/clapack/libF77.a(main.o)(.text+0xa0): In
function `main':
: undefined reference to `f_init'
/usr/local/lib/clapack/libF77.a(main.o)(.text+0xa7): In
function `main':
: undefined reference to `f_exit'
/usr/local/lib/clapack/libF77.a(main.o)(.text+0xb1): In
function `main':
: undefined reference to `MAIN__'
/usr/local/lib/clapack/libF77.a(sig_die.o)(.text+0x3a): In
function `sig_die':
: undefined reference to `f_exit'
/tmp/ccywYycf.o(.text+0xce): In function `main':
/home/Miyazaki/physics/one-dim/effective_potential/test/test1.c:26:
undefined reference to `zgeev_'
collect2: ld はステータス 1 で終了しました
make: *** [debug] エラー 1

libF77.a でシンボル未解決のエラーが出てますが、この問題
以前に
clapack パッケージで定義されている関数 zgeev_() のシンボ
ル解決ができな
いので困っています。

ライブラリは正常にインストールされています。
(もっと単純な dgesv_() を使ったテストプログラムは正常に
コンパイルでき、
正しく動作することは確認しています。)
プラグラムには、blaswrap.h、f2c.h、clapack.h をこの順番
で inlcude
してあります。
また、コンパイル時に -Wl,--verbose -Wl,-v を付けて出力さ
せると、
ちゃんとパスが通っていて、必要なライブラリは認識されてい
るように見えま
す。

(前略)
collect2 version 3.3.2 (i386 Linux/ELF)
attempt to open
/usr/local/lib/atlas/Linux_PIIISSE1/liblapack.a succeeded
attempt to open /usr/local/lib/clapack/libcblaswr.a
succeeded
attempt to open
/usr/local/lib/atlas/Linux_PIIISSE1/libcblas.a succeeded
attempt to open
/usr/local/lib/atlas/Linux_PIIISSE1/libatlas.a succeeded
attempt to open /usr/local/lib/clapack/libF77.a succeeded
attempt to open /usr/lib/libm.so succeeded
-lm (/usr/lib/libm.so)
attempt to open /usr/lib/libefence.a succeeded
GNU ld version 2.14 20030612
(以上、必要なところだけ抽出)
(後略)

Linux_PIIISSE1 ディレクトリ以下の liblapack.a のシンボル
リストを確認する
と、zgeev_ はちゃんと存在してます。

nm -g liblapack.a | grep zgeev_
00000000 T zgeev_

無関係だとは思いますが、zgeev_ 中でフラグが U の関数をチ
ェックしました
が、liblapack.a、libcblaswr.a、libF77.a、libm.a 内で定義
されていることは
確認済です。

liblapack.a、libcblaswr.a、libcblas.a、libatlas.a、libF77.a
、libm.a、
libefence.a のファイル属性はいずれも、

-rw-r--r--    1 root     root 

であることもチェック済です。

もう完全にお手上げで、どこが原因なのか全然わかりません。
どなたか解決策のヒントでもごぞんじないでしょうか?