1

clapackをLinux上のcmakeプロジェクトにリンクするのに苦労しているので、助けていただければ幸いです。

私はclapackを構築し、osx上の同じプロジェクトにリンクすることに成功しました。これにより、この状況は特に苛立たしいものになります。

私は最初にclapack-3.2.1-cmakeをダウンロードし、プロジェクトをコンパイルしました。次に、.aファイルと関連する.hファイルを、プロジェクトのルートディレクトリの下にあるCLAPACKという名前のディレクトリにコピーしました。(libblas.a、libf2c.a、liblapack.a、libtmglib.aをCLAPACK / libに、blaswrap.h、clapack.h、f2c.hをCLAPACKに)

次に、プロジェクトのcmakeファイルを変更して次のようにしました

INCLUDE_DIRECTORIES(${VMT_PRJ_SOURCE_DIR}/CLAPACK)
LINK_DIRECTORIES(${VMT_PRJ_SOURCE_DIR}/CLAPACK/lib)
LINK_LIBRARIES( f2c blas lapack tmglib )

これらの手順により、Macでコンパイルできましたが、プロジェクトをLinuxボックスに転送し、clapackライブラリを再コンパイルすると、次のようなリンクエラーが発生します。

/home/siggik/Development/SFT-9012/CLAPACK/lib/liblapack.a(sgesvd.c.o): In function     `sgesvd_':
sgesvd.c:(.text+0x456): undefined reference to `s_cat'
sgesvd.c:(.text+0x1fa4): undefined reference to `s_cat'
/home/siggik/Development/SFT-9012/CLAPACK/lib/liblapack.a(sormbr.c.o): In function `sormbr_':
sormbr.c:(.text+0x39f): undefined reference to `s_cat'
sormbr.c:(.text+0x45c): undefined reference to `s_cat'
sormbr.c:(.text+0x527): undefined reference to `s_cat'

どんな助けでも素晴らしいでしょう。ありがとう、

スコット

4

1 に答える 1

1

一部のリンカーは、ライブラリを静的にリンクするときにライブラリが渡される順序に敏感です。

libsの順序で遊んでみるか、OSXのコンパイルコマンドラインを見てください。

また、clapackによってインストールされたファイルを見てください-ClapackConfig.cmakeやFindClapack.cmakeのようなCMakeモジュールがあるかもしれません。もしそうなら、あなたはそこから正しいlibsの順序を得ることができます。

于 2012-01-27T08:22:07.790 に答える