我很难将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'
任何帮助都会很棒。谢谢,
斯科特
答案 0 :(得分:1)
在静态链接库时,某些链接器会对库的传递顺序发送。
尝试使用libs命令或在OS X上查看编译命令行。
另外,查看clapack安装的文件 - 也许有一些CMake模块,如ClapackConfig.cmake或FindClapack.cmake。如果是,您可以从那里获得正确的库订单。