我下载并编译了Openblas,现在我正在尝试编译并将openblas链接到Suitesparse 4.4.4。编译完所有lib文件后,当编译器尝试编译 umfpack_di_demo.c 时出现以下错误:
../Lib/libumfpack.a(umf_di_local_search.o): In function `umfdi_local_search': umf_local_search.c:(.text+0x4c0): undefined reference to `dtrsv_' umf_local_search.c:(.text+0x634): undefined reference to `dgemv_' ../Lib/libumfpack.a(umf_di_blas3_update.o): In function `umfdi_blas3_update': umf_blas3_update.c:(.text+0x11d): undefined reference to `dtrsm_' umf_blas3_update.c:(.text+0x1de): undefined reference to `dgemm_' umf_blas3_update.c:(.text+0x2ae): undefined reference to `dger_'
我认为链接不合适。但是,按照SuiteSparse_config.mk的指示,我在我的系统上给出了libopenblas.a的绝对位置。另外,我还在gcc-nm中查看符号dtrsv_是否在libopenblas.a中定义,并且我得到以下输出,表明该符号是在库中定义的:
0000000000000000 T dtrsv_ U dtrsv_NLN U dtrsv_NLU U dtrsv_NUN U dtrsv_NUU U dtrsv_TLN U dtrsv_TLU U dtrsv_TUN U dtrsv_TUU U dtrsv_NLN U dtrsv_NLU U dtrsv_NUN U dtrsv_NUU U dtrsv_TLN U dtrsv_TLU U dtrsv_TUN U dtrsv_TUU dtrsv_NUU.o: 0000000000000000 T dtrsv_NUU dtrsv_NUN.o: 0000000000000000 T dtrsv_NUN dtrsv_NLU.o: 0000000000000000 T dtrsv_NLU dtrsv_NLN.o: 0000000000000000 T dtrsv_NLN dtrsv_TUU.o: 0000000000000000 T dtrsv_TUU dtrsv_TUN.o: 0000000000000000 T dtrsv_TUN dtrsv_TLU.o: 0000000000000000 T dtrsv_TLU dtrsv_TLN.o: 0000000000000000 T dtrsv_TLN U dtrsv_NLU U dtrsv_NUN U dtrsv_TLU U dtrsv_TUN U dtrsv_NLU U dtrsv_NUN U dtrsv_TLU U dtrsv_TUN U dtrsv_ U dtrsv_ U dtrsv_
我不确定这里出了什么问题。我应该在suitesparse_config.mk文件中包含带openblas的lapack吗?任何帮助表示赞赏。感谢。
注意:如果有帮助,我使用 gcc 4.4.7 进行所有编译,我的系统详细信息如下:
Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
==编辑1:我遵循的步骤==
对于Openblas:
对于suitesparse: