好吧,关于如何正确链接事物,我有一个非常令人不安的 CUDA 5.0 问题。我真的很感激任何帮助!
使用 CUDA 5.0 的可分离编译特性,我生成了一个静态库 (*.a)。通过 nvcc 运行时,这很好地与其他 *.cu 文件链接,我已经这样做了很多次。
我现在想获取一个 *.cpp 文件,并使用 g++ 或其他方式将其链接到此静态库中的主机代码,但不使用 nvcc。如果我尝试这样做,我会收到编译器错误,例如
对 __cudaRegisterLinkedBinary 的未定义引用
我正在使用两者-lcuda
,-lcudart
并且据我所知,这些库的顺序正确(意思是-lmylib -lcuda -lcudart
)。我不认为这是一个问题。也许我错了,但我觉得我错过了一个步骤,我需要对我的静态库(设备链接?)做其他事情,然后才能将它与 g++ 一起使用。
我错过了什么重要的事情吗?这甚至可能吗?
奖励问题:我希望最终结果是一个动态库。我怎样才能做到这一点?