2012-01-27 10 views
1

私はclapackを私のcmakeプロジェクトとlinuxでリンクするのが難しく、どんな助けでも大変感謝しています。ClapackをcmakeプロジェクトにリンクするLinux

私は正常に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上で私はすべてのヘルプは次のようになり、この

/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' 

のように見えるリンクエラーを取得していますCLAPACKライ​​ブラリをLinuxボックスにプロジェクトを転送し、再コンパイル時にコンパイルすることができすばらしいです。おかげで、

スコット

答えて

1

いくつかのリンカーは静的にそれらをリンクする際にライブラリが渡される順序にsentisitiveです。

注文やOS Xの

にコンパイルコマンドラインを見てLIBSでプレイしてみてください。また、CLAPACKによってインストールされたファイルを見て - 多分ClapackConfig.cmakeまたはFindClapack.cmakeのようないくつかのcmakeのモジュールがあります。そうであれば、そこから正しいlibsの注文を得ることができます。

+0

正直なところ、私は適切な順序でそれを持っていたと思ったが、それは必要であることが判明した LINK_LIBRARIES(ラップバックブラシtmglib f2c) – Scottfivefour