我想在我的项目中使用CUDPP库。我已从project page下载了来源。不幸的是,当我运行“make”时,只有静态库构建。我查看了Makefile文件,但没有找到任何动态的lib配置。我不想在项目中保留静态库 - 这是完全不可移植的方式。
我的问题是:我如何构建.so动态CUDPP库,而无需编写自己的Makefile /手动编译?也许有人已经做过了吗?
编辑:我已将“g ++”替换为“g ++ -fPIC”,将“gcc”改为“gcc -fPIC”,将“nvcc”改为“nvcc -Xcompiler -fpic”。当我从归档解压缩obj文件,并将它们链接到共享库时,我没有错误。但是,当与此库链接时,我的应用程序在开始时崩溃。
答案 0 :(得分:3)
编译时将标志-Xcompiler -fpic
传递给nvcc。如果您链接到任何cuda库,请确保已链接到共享库,否则您无法链接它。希望这就是你所需要的一切。
答案 1 :(得分:0)
您是否也使用-shared
来创建图书馆?如果存档工作正常,您不需要从存档中提取任何内容。
如果您在可执行文件上运行ldd
,它会向您显示应用程序所需的动态链接,您可以检查-fPIC
等是否正常工作。另外,请确保.so
库位于您的LD_LIBRARY_PATH
上(对不起,如果这很明显,不会造成检查)。