linux - 在 linux 上链接 clapack

标签 linux static-linking lapack

我正在将一个使用 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 的移植,不知道是否有一些不同的要求我需要做出链接或问题是什么

任何帮助将不胜感激。

斯科特

最佳答案

链接的顺序很重要。由于 liblapack.a 需要来自 libf2c.a 的函数,后者需要在前者之后。如此变化

LINK_LIBRARIES(blas f2c lapack tmglib)

LINK_LIBRARIES(blas lapack f2c tmglib)

应该有帮助。

关于linux - 在 linux 上链接 clapack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9010802/

相关文章:

linux - Bash 命令 : export BLAS_LIBS ="-L$LAPACKHOME/lib -lblas"

具有 GSL、LAPACK 或 CBLAS 等数学库的 C++ 性能与具有 R 函数的 Rinside 的 C++ 相比?

c - Linux 提示共享库不存在,而实际上它确实存在

c++ - 为什么 linux 不能捕获 C++ 运行时错误,例如使用浅拷贝构造函数?

c++ - 静态 CRT 链接

c++ - 静态库中的外部变量链接失败

linux - Linux 中的 AF_NETLINK(NETLINK_ROUTE) 和 AF_ROUTE 套接字有什么区别?

linux - 如何在本地安装包?

apache - 并行支持两个端口的 SSL 在静态编译的 Apache2 二进制文件中不起作用

c - BLAS 和 LAPACK 库是否符合 MISRA 标准?