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 回答