我的目标是:library2.so
正在使用library1.so
和mycode.o
正在使用(库应该链接)library2.so
(也许library1.so
).
源代码是(省略一行头文件):
library1.cu:
__device__ void func1_lib1(void){}
Run Code Online (Sandbox Code Playgroud)
library2.cu:
#include "library1.h"
__global__ void func1_lib2(void)
{
func1_lib1();
}
extern "C"
void func2_lib2(void)
{
func1_lib2<<<1,1>>>();
}
Run Code Online (Sandbox Code Playgroud)
mycode.c中:
#include "library2.h"
int main(void)
{
func2_lib2();
}
Run Code Online (Sandbox Code Playgroud)
我正在根据 Makefile 构建共享库
broken:
rm -f *.o *.so
nvcc -arch=sm_30 --compiler-options '-fPIC' -dc library1.cu
nvcc -arch=sm_30 --compiler-options '-fPIC' -dlink -o cuda-lib1.o library1.o
gcc -shared -Wl,-soname,library1.so -o library1.so library1.o uda-lib1.o
nvcc -arch=sm_30 --compiler-options '-fPIC' -dc library2.cu
nvcc -arch=sm_30 --compiler-options '-fPIC' …
Run Code Online (Sandbox Code Playgroud)