【问题标题】:skipping incompatible libcudart.so when searching for -lcudart搜索 -lcudart 时跳过不兼容的 libcudart.so
【发布时间】:2013-06-09 10:30:36
【问题描述】:

当我使用 nvcc 5.0 编译 .cu 文件时,编译器会给出以下信息。

/usr/bin/ld:搜索-lcudart时跳过不兼容的/usr/local/cuda-5.0/lib/libcudart.so

这似乎是警告或错误。我不知道这是怎么回事。

有没有人知道有关此信息的更多详细信息?

【问题讨论】:

  • 您是否要编译 64 位代码?如果是这样,您需要链接到 64 位版本,该版本必须位于 /usr/local/cuda-5.0/lib64/libcudart.so

标签: cuda


【解决方案1】:

在尝试将 64 位代码与 32 位库链接时,经常会出现此警告,请参阅此问题:Skipping Incompatible Libraries at compile

需要区分2个库文件:

  • $CUDA_HOME/lib/libcudart.socudart 库的 32 位版本。
  • $CUDA_HOME/lib64/libcudart.socudart 库的 64 位版本。

(在你的情况下,$CUDA_HOME/usr/local/cuda-5.0

基本上,链接器首先找到 32 位库(按顺序搜索-L 选项)并返回该警告,即使它最终找到了正确的库。

您可能需要在$CUDA_HOME/lib 之前将$CUDA_HOME/lib64 添加到您的LD_LIBRARY_PATH 环境变量中,以便ld 可以在32 位版本之前为您的64 位架构找到合适的库。

【讨论】:

  • 谢谢。我的工作操作系统是 64 位的,所以我的所有代码都将被编译并链接到 64 位。 64 位 CUDA5.0 包含 32 位库似乎很奇怪。
  • 在 64 位操作系统上,您还可以创建和运行 32 位应用程序,因此您需要 32 位 libcudart.so
  • 我似乎有完全相同的问题。我的LD_LIBRARY_PATHlib 之前有lib64,所以这似乎不适用于我的系统。有什么想法吗?
  • @ZoëClark:可以肯定的是,如果您从LD_LIBRARY_PATH 中删除lib 路径,此警告会消失,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
相关资源
最近更新 更多