如何链接英特尔MKL和libdl与黄金链接器?
问题描述:
我在链接英特尔MKL问题,libdl使用在CentOS黄金链接:如何链接英特尔MKL和libdl与黄金链接器?
当我运行此脚本:
#!/bin/bash
MKL_INC=$MKL_INSTALL_DIR/include
MKL_LIB=$MKL_INSTALL_DIR/lib
. /opt/rh/devtoolset-6/enable
cat > t.c << end_mkltest
#include <dlfcn.h>
#include "mkl_service.h"
int main() {
dlerror(); /* use libdl */
mkl_set_num_threads(1); /* use mkl */
}
end_mkltest
gcc -I$MKL_INC -c t.c -o t.o
gcc -L$MKL_LIB -fuse-ld=gold t.o -lmkl_rt -ldl
我得到:
libmkl_rt.so: error: undefined reference to 'calloc'
libmkl_rt.so: error: undefined reference to 'realloc'
libmkl_rt.so: error: undefined reference to 'malloc'
libmkl_rt.so: error: undefined reference to 'free'
我们使用:
CentOS 7.3
devtoolset-6
mkl-2017.2.174.tar.bz2
任何想法?
答
这应该工作。你能发布这个命令显示的链接器命令吗?
gcc -v -L$MKL_LIB -fuse-ld=gold t.o -lmkl_rt -ldl
(对不起,不能发布此作为注释由于缺乏信誉的。)