使用英特尔 MKL 编译 C 代码:ld:未知选项:--no-as-needed

Compiling C code using Intel MKL: ld: unknown option: --no-as-needed

我编写了一个使用 MKL Intel 库(我已经安装)的 C 文件 (template.c)。我正在使用这个 shell 脚本来编译我的代码 (template.c)。假设 C 文件是最小的 - 它导入 MKL 库并有一个主要功能 - 就是这样。

source /opt/intel/compilers_and_libraries_2019.5.281/mac/mkl/bin/mklvars.sh intel64
gcc-9 -fopenmp -m64 -I${MKLROOT}/include -c template.c
gcc-9 -L${MKLROOT}/lib -Wl,--no-as-needed -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl template.o -o template
./template

但是,我在 Mac(Intel 64 位处理器)上遇到以下错误:

ld: unknown option: --no-as-needed

关于为什么会发生这种情况的任何提示?我正在使用 Homebrew 的最新 GCC 版本。

脚本的第一行获取脚本使用的环境变量,例如$MKLROOT。之后,它应该创建一个目标文件,并最终 运行 名为模板的可执行文件。

请确保您已为所选接口层使用推荐的编译器选项。

Caution: linking Intel(R) MKL libraries with your objects compiled for different interface layer may lead to run-time errors.

参考以下 link:

英特尔 MKL Link 线路顾问 https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor