【问题标题】:error: cuda_runtime.h: No such file or directory错误:cuda_runtime.h:没有这样的文件或目录
【发布时间】:2012-10-21 11:32:38
【问题描述】:

如何强制 gcc 在 /usr/cuda/local/include 中查找 cuda_runtime.h?

我正在尝试使用 C 包装器编译 CUDA 应用程序。我正在运行 Ubuntu 10.04。

我已使用以下命令成功地将我的 CUDA 应用程序编译为 .so:

nvcc -arch=sm_11 -o libtest.so --shared -Xcompiler -fPIC main.cu

当我尝试使用以下命令编译我的 c 包装文件时:

gcc -std=c99 -o main -L. -ltest main.c

我收到错误:

error: cuda_runtime.h: No such file or directory

我已验证 cuda_runtime.h 实际上存在于 /usr/local/cuda/include 中

【问题讨论】:

  • 我假设你的意思是 /usr/local/cuda/include。您是否尝试将 -I 开关添加到您的 gcc 命令行?例如:gcc -std=c99 -I/usr/local/cuda/include -o main -L。 -ltest main.c
  • 如果您不介意,请将其发布为您问题的答案。然后接受它,否则我会投票赞成答案。谢谢。
  • 是否有任何选项可以在不添加 -l 的情况下使其工作?图书馆给了我这个错误

标签: c gcc cuda nvcc


【解决方案1】:

如果你使用的是 CMake

find_package(CUDA  REQUIRED)
include_directories("${CUDA_INCLUDE_DIRS}")

【讨论】:

    【解决方案2】:

    使用 -I 开关允许 gcc 找到 cuda_runtime.h 文件:

    gcc -std=c99 -I/usr/local/cuda/include -o main -L. -ltest main.c
    

    【讨论】:

      【解决方案3】:

      我们正在使用 CMake,但它仍然无法找到头文件(可能是 CMake 版本找不到目录 ./targets/x86_64-linux/include 或者因为我们有多个 CUDA 版本)。设置 CPATHLD_LIBRARY_PATH 为我们修复了它:

      export CPATH=/usr/local/cuda-10.1/targets/x86_64-linux/include:$CPATH
      export LD_LIBRARY_PATH=/usr/local/cuda-10.1/targets/x86_64-linux/lib:$LD_LIBRARY_PATH
      export PATH=/usr/local/cuda-10.1/bin:$PATH
      

      【讨论】:

        【解决方案4】:

        在 flags.make 文件中将-isystem /usr/local/cuda-8.0/include 添加到 CXX_INCLUDES。

        【讨论】:

          猜你喜欢
          • 2014-09-20
          • 2021-10-31
          • 1970-01-01
          • 2013-08-08
          • 2013-11-04
          • 2012-02-18
          • 2011-03-22
          • 2015-12-29
          • 2011-02-06
          相关资源
          最近更新 更多