c - 如何将英特尔 MKL 和 libdl 与黄金链接器链接起来?

标签 c centos glibc intel-mkl gold-linker

我在 CentOS 上使用黄金链接器链接 Intel 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

(抱歉,由于缺乏声誉,无法将此作为评论发布。)

关于c - 如何将英特尔 MKL 和 libdl 与黄金链接器链接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979768/

相关文章:

c - 在我的 C 程序中,全局变量初始化为 1 而不是 0

c - 堆栈头部和尾部更新为相同的值但仅在 head-C 编程上调用更新

linux - 与包 filesystem-3.2 中的文件冲突

linux - 内核空间有libc吗?

c - 如何使用 glibc 的调试版本来构建程序?

c - 带有 axTLS 的 libCurl 中的错误 "Invalid X509 ASN.1 file"

c++ - 以编程方式设置子进程的各种限制 (Linux)

permissions - nfsnobody 用户权限

php - 无法启动/重启 PHP 7.2 FPM 服务(CentOS 7、Apache)

c++ - 无法使用 Fedora 中的 g++