linux - $MKLROOT 未定义(Ubuntu)

标签 linux ubuntu intel environment intel-mkl

环境:Linux,Ubuntu 16.04

我尝试从英特尔网站 (https://software.intel.com/content/www/us/en/develop/tools/math-kernel-library.html) 下载 MKL 库,并尝试将 mkl 链接到我的程序。

(我刚刚下载了 l_mkl_2020.1.217.tar 文件,将其解压缩,然后在该文件中运行 ./install.sh)

但是每次我尝试构建时,都会打印以下消息

$ pkg-config --cflags --libs mkl-dynamic-lp64-iomp.pc

Variable 'MKLROOT' not defined in 'mkl-dynamic-lp64-iomp.pc

即使我尝试了export MKLROOT=/opt/intel/mkl (这是我的 mkl 根路径),
还是找不到MKLROOT小路

我还尝试运行 test.sh 文件,如下所示,
echo $MKLROOT

它清楚地打印MKLROOT变出。

intel .pc 文件中的变量是否与 Ubuntu 上的环境变量有些不同?以及为什么我的 mkl 无法联系到 MKLROOT多变的?

如果有人能回答这个问题,我会非常感谢你。谢谢!

- - 添加 - -

我刚刚通过添加单行解决了这个问题
MKLROOT=/opt/intel/mkl
mkl-dynamic-lp64-iomp.pc 的第一部分(即使它的只读文件,我只是输入了 wq! ),但我认为这不是一个激进的解决方案。仍然需要答案,任何帮助将不胜感激

最佳答案

似乎 pkg-config元数据文件不适用于外部环境变量,即使您正确导出了它们。
但是pkg-config对此有另一种机制。您可以设置PKG_CONFIG_MKL_DYNAMIC_LP64_IOMP_MKLROOT :

$ echo $MKLROOT
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl
$ pkg-config --cflags mkl-dynamic-lp64-iomp
Variable 'MKLROOT' not defined in '/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/bin/pkgconfig/mkl-dynamic-lp64-iomp.pc'
$ export PKG_CONFIG_MKL_DYNAMIC_LP64_IOMP_MKLROOT=$MKLROOT
$ pkg-config --cflags mkl-dynamic-lp64-iomp
-I/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/include
一般情况下,环境变量PKG_CONFIG_XXX_VVV将覆盖变量 VVV包装内XXX .两个XXXVVV必须为大写,并且将非字母数字字符转换为下划线。 (见 man pkg-config)
(请注意,您的包是 imkl-dynamic-lp64-iomp ,没有 .pc 扩展名。)

关于linux - $MKLROOT 未定义(Ubuntu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62298109/

相关文章:

linux - APT 存储库中找到的软件包中的 "-dev"后缀是什么

java - 在 Ubuntu 上打开和关闭 Glassfish 3

java - 循环习语的奇怪 JIT 悲观化

windows - 定期运行英特尔的 VTune

c++ - gcc 中的 Intel 风格内联汇编

c++ - 使用与 makefile 链接的共享库

linux - 更改 PuTTY 连接中的目录

linux - 获取一段时间内目录中所有文件系统操作的计数

linux - URL 路径在本地有效,但在服务器上无效

ubuntu - 在 Ubuntu 10.04 Lucid 上设置 Cherokee + Web2py