Compiler construction 为什么没有链接此共享库?

Compiler construction 为什么没有链接此共享库?,compiler-construction,cuda,compilation,linker,shared-libraries,Compiler Construction,Cuda,Compilation,Linker,Shared Libraries,我正在尝试使用GPUocelot在x86cpu上生成GPGPU基准测试的跟踪。因此,我使用-locelot和-locelotTrace链接器标志编译基准测试。我的基准测试编译和执行良好。但是,不会生成跟踪 编译命令: nvcc -arch=sm_20 bfs.cu -o bfs -locelot -locelotTrace libocelot.so和libocelotTrace.so位于/usr/local/lib和LD\u LIBRARY\u PATH=/usr/local/lib中 我使用

我正在尝试使用GPUocelot在x86cpu上生成GPGPU基准测试的跟踪。因此,我使用-locelot和-locelotTrace链接器标志编译基准测试。我的基准测试编译和执行良好。但是,不会生成跟踪

编译命令:

nvcc -arch=sm_20 bfs.cu -o bfs -locelot -locelotTrace
libocelot.so
libocelotTrace.so
位于
/usr/local/lib
LD\u LIBRARY\u PATH=/usr/local/lib

我使用
ldd
验证了链接到此二进制文件的共享库。我可以看到
libocelot.so
是链接的,但我看不到
libocelottrace.so

我认为这是导致无法生成跟踪的问题。如何确保二进制文件链接到
libocelottrace.so

我可以看到
libocelot.so
是链接的,但我看不到
libocelottrace.so

这可能是因为

  • 编译器使用
    --as-needed
    链接器标志(如果使用
    -v
    标志调用
    nvcc
    ),并且
  • 您的命令行不正确。改为尝试
    nvcc-arch=sm_20 bfs.cu-o bfs-locelotTrace-locelot
    (命令行上库的顺序很重要)
在gpuocelot中启用跟踪比在另一个库中链接更复杂。如果没有链接到库中,可能是因为您没有采取必要的步骤在代码库中启用跟踪,因此不依赖于跟踪库(请注意下面提到的
--根据需要
)。