vine-users ML アーカイブ



[vine-users:072683] Re: linker error on clapack

  • From: <xmhdy897@xxxxxxxxxxx>
  • Subject: [vine-users:072683] Re: linker error on clapack
  • Date: Fri, 19 Aug 2005 03:04:37 +0900 (JST)
宮崎です。こんにちは。

> 福原です
> 

> ATLAS と CLAPACK
> をどういう風にインストールしたのでしょうか.

いずれもソースコードからコンパイルしています。
clapack は netlib からとってきた version 3.0、
atlas も本家からの最新版です。
コンパイルの順番も、指示どおり clapack、atlas の
順です。clapack は Readme.install にしたがって
コンパイルすると、(4) の blas testing で
変なエラーメッセージは出ますが、これはどうしようもないの
で無視してます。google で検索すると、このエラーは
他の人も経験していて避けがたいようです。

http://www.cbrc.jp/~tominaga/tips/osx_lapack.html

clapack は、このエラー以外何らトラブルなくインストールで
きます。
atlas も install.txt どおりにやっています。
こちらもトラブルなくインストールできます。
clapack は、/usr/local/lib/clapack 以下に、
atlas は /usr/local/lib//atlas 以下に入れています。
なお、コンパイラは、gcc-3.3.2 を使用してます。

> http://math-atlas.sourceforge.net/ から
> atlas3.7.10.tar.bz2
> をとってきてインストールしてみると,liblapack.a には
> zgeev は含まれませんでした.

普通に atlas をコンパイルしただけだと、
atlas のディレクトリにできる liblapack.a の中には
zgeev は入っていません。
何もしないと、zgeev は、clapack ディレクトリ側の
liblapack.a に入っているだけです。

atlas/doc/Libreadme.txt の最後の部分に
clapack ディレクトリにできる liblapack.a とマージして
full package を作る方法がかかれています。
これに従って、atlas にできる
liblapack.a と clapack にできる liblapack.a を
マージしています。マージされた liblapack.a は
atlas ディレクトリ側に入ります。
nm -g 云々でみたのは、マージされた 
atlas ディレクトリにある liblapack.a です。
マージしたので、zgeev が入っています。

(念のためですが)なぜこんなことまでやったかと
言うと、当初はマージしていなかったのですが、
あんまりリンカが通らないので、atlas ディレクトリ側の
liblapack.a を読んでしまってエラーがでているのか
とも考えられたので、いろいろ調べてみて、
こういうマージされた liblapack.a を使う方法を
試したのです。で、結果はやっぱりリンカのエラーは
変わらないということです。

 
> -llapack のかわりに lapack_LINUX.a
> を(フルパスで)指定して,

趣旨は、多分、clapack ディレクトリにある
liblapack.a のシンボリックリンク元をフルパスで
直接参照せよということだと思いますが、
これって、gcc の -l オプションを使ってできるのですか?
もし直接参照できるなら、やりかたを教えてもらえませんか?


> -lF77 の次に -lI77 を追加でどうでしょう.

これもうまく行きませんでした。

liblapack.a の zgeev.o の中のシンボルをチェックした
限りの話ですが、zgeev.o は、libI77.a の中の関数を
コールしていないので追加してもかわらないのだと
思います。


binutils のバージョンが古いせいなのかと思って、
昨日からバージョンアップして試したりしたのですが、
これもハズレのようで、やっぱりリンカでエラーがでます。
clapack などのパッケージ側の問題なのか、
gcc や bintuils の問題なのか、はたまた私の PC の
システム構成の問題なのか、糸口が見えないので
ほとほと弱りました。