将Clapack链接到cmake项目Linux

时间:2012-01-27 00:06:43

标签: linux linker cmake lapack

我很难将clapack链接到linux上的cmake项目,非常感谢任何帮助。

我已成功构建并将clapack链接到osx上的同一个项目,这使得这种情况特别令人沮丧。

我首先下载了clapack-3.2.1-cmake并编译了该项目。然后,我将.a和相关的.h文件复制到项目根目录下的名为CLAPACK的目录中。 (libblas.a,libf2c.a,liblapack.a和libtmglib.a到CLAPACK中的CLAPACK / lib和blaswrap.h,clapack.h和f2c.h)

然后我将项目的cmake文件更改为包含

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

这些步骤允许我在我的mac上编译,但是在将项目转移到linux盒子并重新编译clapack库时,我得到链接错误,看起来像这样

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

任何帮助都会很棒。谢谢,

斯科特

1 个答案:

答案 0 :(得分:1)

在静态链接库时,某些链接器会对库的传递顺序发送。

尝试使用libs命令或在OS X上查看编译命令行。

另外,查看clapack安装的文件 - 也许有一些CMake模块,如ClapackConfig.cmake或FindClapack.cmake。如果是,您可以从那里获得正确的库订单。