1

clapack を使用するプロジェクトを osx から Linux に移行していますが、いくつかの問題が発生しています。cmake プロジェクトをダウンロードし、必要な .h ファイルと .a ファイルをコンパイルしてプロジェクト内の適切な場所に移動することで、clapack を使用します。

両方のシナリオ (osx と Linux) で同じ手順を使用し、両方のマシンでまったく同じソース コードを使用しましたが、Linux ですべてを適切にリンクすることはできません。

私のcmakeファイルのコード行は次のようになります

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

そして、私が得ているエラーは次のようになります

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

osx から linux への移植を行ったのはこれが初めてで、リンクするために必要な要件がいくつかあるのかどうか、または問題が何であるかがわかりません。

どんな助けでも大歓迎です。

スコット

4

1 に答える 1

0

リンクの順序が重要です。liblapack.aからの関数が必要なのでlibf2c.a、後者は前者の後に来る必要があります。とても変化しています

LINK_LIBRARIES(blas f2c lapack tmglib)

LINK_LIBRARIES(blas lapack f2c tmglib)

助けるべきです。

于 2012-01-25T22:07:56.570 に答える