我正在学习PETSc并尝试用 C 编写示例。但是,当我使用提供的 makefile 时,出现以下错误:
/usr/bin/ld: cannot find -lmkl
当我检查mkl/lib
目录时,我发现没有一个.a
或.so
文件被调用libmkl
。
我是否需要重新编译 PETSc 才能让内置的 makefile 链接到 MKL?
如果没有,我应该链接到哪个库文件lmkl
?
我正在学习PETSc并尝试用 C 编写示例。但是,当我使用提供的 makefile 时,出现以下错误:
/usr/bin/ld: cannot find -lmkl
当我检查mkl/lib
目录时,我发现没有一个.a
或.so
文件被调用libmkl
。
我是否需要重新编译 PETSc 才能让内置的 makefile 链接到 MKL?
如果没有,我应该链接到哪个库文件lmkl
?
这似乎是英特尔数学内核库的链接问题。你有很多问题,所以我会尝试解决每一个问题。
一般来说,当出现链接问题时,尤其是“找不到 -lfoo”时,请检查搜索目录。这些是通常用 -L 指定的选项,例如“-L /path/to/libraries”。在您的情况下,英特尔编译器通常应该接受“-lmkl”选项,该选项在内部指定库的位置。但是,这并不能解决您的问题。
由于您通常是 PETSc,并且您遇到此错误,这意味着您在构建 PETSc 后尝试切换编译器或 BLAS/LAPACK 库。这是不支持的。所以,是的,您需要重新配置和重建指定英特尔编译器和 MKL。有关详细信息,请参阅安装帮助。
有许多库需要链接,以便您可以使用英特尔的 MKL。英特尔甚至制作了一个有用的页面来构建命令行链接选项。