我已经安装了英特尔 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
添加到LIB
makefile 变量中。
为了澄清,整行应该是
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
选项(就像您当前在显示的代码中一样(并添加新选项。