我下载并编译了 Openblas,现在我正在尝试编译并将 openblas 链接到 Suitesparse 4.4.4。编译所有 lib 文件后,当编译器尝试编译umfpack_di_demo.c时出现以下错误:
../Lib/libumfpack.a(umf_di_local_search.o):在函数“umfdi_local_search”中: umf_local_search.c:(.text+0x4c0): undefined reference to `dtrsv_' umf_local_search.c:(.text+0x634): 对“dgemv_”的未定义引用 ../Lib/libumfpack.a(umf_di_blas3_update.o):在函数“umfdi_blas3_update”中: umf_blas3_update.c:(.text+0x11d): 未定义对“dtrsm_”的引用 umf_blas3_update.c:(.text+0x1de): 未定义对“dgemm_”的引用 umf_blas3_update.c:(.text+0x2ae): 对“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:
- 从 http://github.com/xianyi/OpenBLAS/zipball/v0.2.14 下载 openblas。
- 使用 gcc-4.4.7 和以下命令在我的系统上解压缩并编译它 make FC=/usr/bin/lgfortran-4.4 我必须提供 'FC' 因为我的系统没有 libgfortran.* 存在于 /usr/lib /。
- 编译完成后,我键入 make install 以安装到我的主文件夹中的自定义目录。
对于套件稀疏:
- 从 http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.4.4.tar.gz 下载suitesparse
- 解压它,并编辑 suitsparse_config.mk 文件以进行以下修改:A) 启用 CHOLMOD 和 SPQR 的 GPU 配置,B) 不使用 metis,因此注释“METIS_PATH = ../../metis-4.0”和“METIS = ../../metis-4.0/libmetis.a”。此外,未提交的“CHOLMOD_CONFIG = -DNPARTITION”。C)给出了openblas的自定义安装路径:BLAS = -L//OpenBLAS/local/lib/libopenblas.a -lpthread -L/usr/lib/gcc/x86_64-linux-gnu/4.4.7/libgfortran.so
- 在 srcdir 中键入 make。