2012-01-25 9 views
1

私はclapackをosxからlinuxに移行し、いくつかの問題を経験しているプロジェクトを動かしています。私はcmackプロジェクトをダウンロードし、必要な.hと.aファイルをコンパイルしてプロジェクト内の関連する場所に移動することで、clapackを使用します。Linuxでclapackをリンクする

私は両方のシナリオ(osxとlinux)で同じ手順を使用していますが、両方のマシンで同じ正確なソースコードを持っていますが、Linux上ですべてを正しくリンクすることができません。

この

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

と、私はこれは私がOSX版からポートを行っている最初の時間です。この

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

のようなルックスを取得していますエラーのように見える私のcmakeのファイル内のコードの並びます私はリンクするために必要ないくつかの異なる要件があるかどうか、または問題が何であるか分かりません。

何か助けていただければ幸いです。

Scott

答えて

0

リンクの順番。 liblapack.alibf2c.aの機能を必要とするので、後者は前者の後に来る必要があります。だから、助けるべき

LINK_LIBRARIES(blas lapack f2c tmglib) 

LINK_LIBRARIES(blas f2c lapack tmglib) 

を変更します。

+0

これはいくつかのエラーの助けになりましたが、まだ未定義の参照がいくつかあります。 gccコンパイラでlinuxではなくosxで問題が発生するのはなぜですか? – Scottfivefour

+0

OS Xが使用しているリンカーについて私は本当に知りません。おそらくそれはより知的です。 Linuxで心に留めておくべきことは、それを使用するすべてのライブラリの後に各ライブラリを配置することです。 –

関連する問題