2017-07-07 102 views
1

我在链接英特尔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 

任何想法?

回答

0

这应该工作。你能发布这个命令显示的链接器命令吗?

gcc -v -L$MKL_LIB -fuse-ld=gold t.o -lmkl_rt -ldl 

(对不起,不能发布此作为注释由于缺乏信誉的。)