【问题标题】:NVCC CUDA cross compiling cannot find "-lcudart"NVCC CUDA 交叉编译找不到“-lcudart”
【发布时间】:2015-08-22 10:54:09
【问题描述】:

我已经在我的 Ubuntu 虚拟机上安装了 CUDA 5.0 和 NVCC,并且在编译基本的 CUDA C 程序时也遇到了问题。错误如下:

user@ubuntu:~/CUDA$ nvcc helloworld.cu -o helloworld.o -target-cpu-arch=ARM -ccbin=/usr/bin/arm-linux-gnueabi-gcc-4.6 --machine=32
/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld: skipping incompatible /usr/local/cuda-5.0/bin/../lib/libcudart.so when searching for -lcudart
/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld: skipping incompatible /usr/lib/libcudart.so when searching for -lcudart
/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld: cannot find -lcudart
collect2: ld returned 1 exit status

我曾尝试研究此问题并遇到此链接:skipping incompatible libcudart.so when searching for -lcudart

所以我遵循了该链接上提供的建议并添加了

 /usr/local/cuda-5.0/lib64 

/usr/local/cuda-5.0/lib 

到我的 LD_LIBRARY_PATH 环境变量,现在这是

  user@ubuntu:~/CUDA$ echo $LD_LIBRARY_PATH 
  /usr/local/cuda-5.0/lib:/usr/local/cuda-5.0/lib64
  user@ubuntu:~/CUDA$ 

但是问题依然存在,请帮忙。

【问题讨论】:

  • 你确定你安装的工具包版本支持ARM吗?
  • 我从网站上安装了.run文件,我使用CUDA 5.0而不是最新版本的原因是因为我的项目没有使用最新版本。
  • 这不是我问的。发生错误不是因为找不到运行时库,而是因为找不到ARM版本。所以我重复我的问题 - 你安装的工具包版本是否真的有一个 ARM 运行时库?
  • 如何查看是否有ARM运行时库?
  • 阅读 takeit 附带的发行说明,并在工具包安装目录中查找它。我怀疑你会发现什么,我模糊的记忆告诉我 ARM 支持仅在 5.5 版本中添加到 CUDA

标签: linux cuda ld nvcc


【解决方案1】:

CUDA 5.5 是第一个支持 ARM v7 的 CUDA 版本。您安装的 CUDA 5.0 工具包不支持,这就是它找不到正确版本的 CUDA 运行时库的原因。

【讨论】:

【解决方案2】:

事实证明,我使用的 NVIDIA CUDA 安装程序不允许我为我的 CARMA 板进行交叉编译,但必须从制造商 SECO 下载它。

【讨论】:

    【解决方案3】:

    可能是,这是 Cuda 工具包的问题。 第一个 Cuda Toolkit 5.0 不支持 Arm。 第二个Cuda Toolkit 6.5 交叉编译丢失libcudart.so。我解决了这个问题是从 Arm 的 Cuda Toolkit 6.5 中复制 libcudart.so。

    【讨论】:

      【解决方案4】:

      在 ~/.bashrc 中添加以下内容

      导出 PATH=/usr/local/cuda-5.0/bin:$PATH

      导出 LD_LIBRARY_PATH=/usr/local/cuda-5.0/lib64:$LD_LIBRARY_PATH

      在以下文件中 -> /etc/ld.so.conf.d/cuda.conf

      /usr/local/cuda-5.0/lib64

      运行:sudo ldconfig

      【讨论】:

        【解决方案5】:

        添加 /etc/ld.so.conf 这个:

        /usr/local/cuda-5.0/lib /usr/local/cuda-5.0/lib64

        并运行命令:ldconfig 你的编译会找到 cudart lib

        【讨论】:

        • 这无关紧要,对编译行为没有影响。另外,您绝对永远不会希望在交叉编译环境中执行此操作。这将使您的操作系统搜索外部架构库,这将减慢应用程序的启动速度并导致非常难以诊断运行时错误。
        猜你喜欢
        • 2010-10-05
        • 2011-12-17
        • 2016-12-12
        • 2016-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-29
        • 2019-08-26
        相关资源
        最近更新 更多