1

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

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

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

然后我更改了我的项目的 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'

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

斯科特

4

1 回答 1

1

一些链接器在静态链接库时对传递库的顺序很敏感。

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

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

于 2012-01-27T08:22:07.790 回答