如何更改路径以修复错误"./main:加载共享库 libmkl_core.so 时出错?



我已经安装了英特尔 mkl 库。 内容有路径/home/user/intel/..... .我必须使用提到它的 make 文件运行一个C++代码。

CC = /home/user/intel/bin/icpc -g
INCLUDE = -I/home/user/intel/mkl/include 
LIB = -L/home/user/intel/mkl/lib/intel64 -lmkl_core -lmkl_intel_lp64 -lmkl_intel_thread -liomp5 -lpthread -std=c++11

我已经成功安装了parallel_studio_xe_2019_update5_cluster_edition . 但是在加载共享库时仍然收到一条错误消息 ./main :error。如何修复此错误。我需要做哪些更改?

与共享库的链接实际上分两步完成:构建时(链接器需要查找库(;而运行时(当操作系统动态加载时需要查找库(。

使用安装在非标准位置的库进行生成时,可以使用-L选项告诉链接器在何处查找库。不幸的是,它没有告诉动态加载程序库的位置。

要告诉动态加载程序动态库的位置,有几种方法,我建议在构建时添加一个标志,以便链接器将位置嵌入到可执行程序文件中以供动态加载程序查看。这是通过选项-Wl,-rpath,/path/to/lib/directory完成的。

在您的情况下,您需要将选项-Wl,-rpath,/home/user/intel/mkl/lib/intel64添加到LIBmakefile 变量中。


为了澄清,行应该是

LIB = -L/home/user/intel/mkl/lib/intel64 -Wl,-rpath,/home/user/intel/mkl/lib/intel64 -lmkl_core -lmkl_intel_lp64 -lmkl_intel_thread -liomp5 -lpthread -std=c++11 

也就是说,您需要旧的-L选项(就像您当前在显示的代码中一样(添加新选项。

最新更新