【问题标题】:Linking C programme with libclBLAS将 C 程序与 libclBLAS 链接
【发布时间】:2015-07-31 09:50:02
【问题描述】:

我正在尝试开始使用 clBLAS。 我在 linux 64 位上使用 clBLAS-2.6.0 Release for ACL 1.0 Beta 1。 从示例目录下载的二进制文件在我的硬件上运行良好,但我的工作是从源代码编译其中最简单的二进制文件并将其链接到共享库。 树目录如下所示:

.
├── clBlasVersion.c
├── include
│   ├── clAmdBlas.h
│   ├── clAmdBlas.version.h
│   ├── clBLAS-complex.h
│   ├── clBLAS.h
│   └── clBLAS.version.h
└── lib
    └── libclBLAS.so

我正在使用 gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4 和以下命令:

 gcc -Iinclude -Llib clBlasVersion.c

因链接错误而失败:

/tmp/ccC9kQ9C.o: In function `main':
clBlasVersion.c:(.text+0x1b): undefined reference to `clblasGetVersion'
collect2: error: ld returned 1 exit status

AMDAPPSDKROOT 在环境和二进制文件中设置,包含在发行版中,可以显示正确版本的 clblas。 有什么建议我缺少什么吗?

【问题讨论】:

    标签: c gcc opencl amd


    【解决方案1】:

    您告诉链接器在 lib 文件夹中查找它可能需要的库 (-L) 选项,但您没有指定要链接的库。

    尝试使用-l 选项,如

    gcc -Iinclude -Llib -lclBLAS clBlasVersion.c
    

    【讨论】:

    • 好点。谢谢!但在这种情况下,指定库不起作用。我解决了gcc -Iinclude clBlasVersion.c -Llib -lclBLAS -lpthread 的问题。后者解决了对线程库的依赖。
    • 说它不起作用是不正确的:)。这还不够,仅根据您的问题我无法知道您的代码还有哪些其他依赖项(在这种情况下为pthread):)。
    • 谢谢,但实际上它不起作用,除非我将源文件的名称放在 -I-L 选项之间
    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    相关资源
    最近更新 更多