为啥 /usr/lib/ld 找不到 -lcudart?

Posted

技术标签:

【中文标题】为啥 /usr/lib/ld 找不到 -lcudart?【英文标题】:why /usr/lib/ld connot find -lcudadevrt?为什么 /usr/lib/ld 找不到 -lcudart? 【发布时间】:2022-01-08 22:48:48 【问题描述】:

我正在学习 cuda 编程 从

编译示例代码时
nvcc -o hello hello.cu

返回

/usr/bin/ld: cannot find -lcudadevt
/usr/bin/ld: cannot find -lcudart_static

但是我的 cuda 配置看起来不错, 我的LD_LIBRARY_PATHPATH 已经包含了cuda 的正确路径。

怎么做?

【问题讨论】:

LD_LIBRARY_PATH 指向哪里?有哪些文件?它应该指向 .so 文件 LD_LIBRARY_PATH 是运行时链接加载器设置。它与链接行为无关。 Nvcc 应该能够在没有任何用户干预的情况下找到这些库。如果不能,您可能安装了损坏的工具包 cuda 是(或者是,我很久没看过了)完全是 C++。 Nvidia 在提到“Cuda C”时是在撒谎(或“营销”,不太确定有什么区别)。您应该删除 C 标记。 @ShlomiAgiv 谢谢,LD_LIBRARY_PATH 指向 /usr/local/cuda-11.0/lib64,因为安装说明已清除。 @talonmies 谢谢,也许我会检查两次。 【参考方案1】:

LD_LIBRARY_PATH 和 PATH 是运行时变量。在链接时,您必须使用链接器的 -L 标志指定共享对象的位置。

【讨论】:

谢谢!我记得我确实明确链接过它。我的命令是 nvcc -o hello hello.cu -L/usr/local/cuda-11.0/lib64 我再检查一遍!

以上是关于为啥 /usr/lib/ld 找不到 -lcudart?的主要内容,如果未能解决你的问题,请参考以下文章

为啥找不到 getservletcontext?

总是提示找不到符号为啥

java为啥每次都是找不到文件。找不到文件?

为啥 GetProperty 找不到它?

为啥我找不到 ProgressiveMediaSource?

为啥找不到这些符号?