错误:_cspr_lp64_iface.c:(.text+0x28): undefined reference to `mkl_blas_cspr'类似未定义引用

 

1 编译出现

      ../../tmglib_LINUX.a linsrc_LINUX.a ../../libmkl_intel_lp64.a -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lm -lpthread -lifcore -o ../xlintimc

../../libmkl_intel_lp64.a(_cspr_lp64.o): In function `cspr_':

_cspr_lp64_iface.c:(.text+0x28): undefined reference to `mkl_blas_cspr'

make: *** [../xlintimc] 错误 1

 

 

是因为把mkllapack拷贝进入自己的lapack包里面引起的,改为使用

系统安装的lapack

/opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_lp64.a

 

 

推测原因:1  是因为库引用之间存在相对路径,移过来后就找不到函数了

                     2 编译添加的库里面,库与库之间可能存在位置关系(与编译器有关),比如

A 库引用B,那么库A写在库B的前面

              3 系统中有两个mkl库,注意不要混合使用(需要修改编译选项和环境变量LD_LIBRARYPATH使得编译程序所使用的函数均来自同一个库)。

 

注意不要缺失库,这需要阅读intel 提供的mkl手册,把库写全写对。

 

本例中其他库所引用的函数在lapack库中,故它写在后面;而它引用blas库,故blas库写在最后

原文地址:https://www.cnblogs.com/catkins/p/5270810.html