在linux上链接clapack

时间:2012-01-25 21:47:49

标签: linux static-linking lapack

我正在移动一个项目,该项目使用从osx到linux的clapack并遇到一些问题。我通过下载cmake项目来使用clapack,编译并将必要的.h和.a文件移动到我项目中的相关位置。

我在两个场景(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完成一个端口,并且不知道我需要做一些不同的要求才能链接或者问题是什么

非常感谢任何帮助。

斯科特

1 个答案:

答案 0 :(得分:0)

关联事项的顺序。由于liblapack.a需要来自libf2c.a的函数,后者需要追溯前者。如此改变

LINK_LIBRARIES(blas f2c lapack tmglib)

LINK_LIBRARIES(blas lapack f2c tmglib)

应该有帮助。