将 CUDA 静态或共享库与 gcc 链接时出现未定义的引用错误

2024-01-07

gcc 和 CUDA 问题

Hi,

我已经编译了一个 CUDA 共享库,但无法将其与使用它的主程序链接。我正在用 gcc 编译主程序。

代码:

简单主程序

    #include <stdio.h>
    #include <stdlib.h>



    void fcudadriver();

    int main()
    {
      printf("Main \n");
      fcudadriver();
      return 0;
    }

test.cu

    __global__ void fcuda()
    {
    }

    void fcudadriver()
    {
      fcuda<<<1,1>>>();
    }

我将 test.cu 编译为 --> 它有效

    nvcc --compiler-options '-fPIC' -o libtest.so --shared test.cu

我将 simplemain.c 编译为 ---> 它给出了错误:(

    gcc simplemain.c -L. -ltest
    /tmp/ccHnB4Vh.o:simplemain.c:function main: error: undefined reference to 'fcudadriver'
    collect2: ld returned 1 exit status

尝试使用 g++ 而不是 gcc。 nvcc 使用 C++ 风格的链接约定。 (您不需要重命名任何文件。)

或者,如果您必须使用 gcc,请在前面加上您的void fcudadriver()函数定义如下:

extern "C" void fcudadriver()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 CUDA 静态或共享库与 gcc 链接时出现未定义的引用错误 的相关文章

随机推荐