我正在移动一个项目,该项目使用从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完成一个端口,并且不知道我需要做一些不同的要求才能链接或者问题是什么
非常感谢任何帮助。
斯科特
答案 0 :(得分:0)
关联事项的顺序。由于liblapack.a
需要来自libf2c.a
的函数,后者需要追溯前者。如此改变
LINK_LIBRARIES(blas f2c lapack tmglib)
到
LINK_LIBRARIES(blas lapack f2c tmglib)
应该有帮助。