Bib*_*rak 6 c cuda shared-libraries undefined-reference nvcc
嗨,
我编译了一个CUDA共享库,但无法将其与使用它的主程序链接.我用gcc编译主程序.
代码:
simplemain.c
#include <stdio.h>
#include <stdlib.h>
void fcudadriver();
int main()
{
printf("Main \n");
fcudadriver();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
test.cu
__global__ void fcuda()
{
}
void fcudadriver()
{
fcuda<<<1,1>>>();
}
Run Code Online (Sandbox Code Playgroud)
我编译test.cu为 - >它的工作原理
nvcc --compiler-options '-fPIC' -o libtest.so --shared test.cu
Run Code Online (Sandbox Code Playgroud)
我编译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
Run Code Online (Sandbox Code Playgroud)
尝试使用 g++ 而不是 gcc。nvcc 使用 C++ 风格的链接约定。(您不需要重命名任何文件。)
或者,如果您必须使用 gcc,请在void fcudadriver()函数定义前添加如下内容:
extern "C" void fcudadriver()
Run Code Online (Sandbox Code Playgroud)