c++ - Ubuntu 16.04,Nvidia toolkit 8.0 RC,暗网编译错误: expected a ";"

标签 c++ ubuntu cuda

我正在编译 Darknet在具有 GPU 支持的 Ubuntu 16.04 上。 Nvidial 工具包 8.0 版 RC

我遇到了错误:

nvcc --gpu-architecture=compute_52 --gpu-code=compute_52  -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ --compiler-options "-Wall -Wfatal-errors  -Ofast -DOPENCV -DGPU" -c ./src/convolutional_kernels.cu -o obj/convolutional_kernels.o
/usr/local/cuda/include/surface_functions.h(134): error: expected a ";"

/usr/local/cuda/include/surface_functions.h(135): error: expected a ";"

/usr/local/cuda/include/surface_functions.h(136): error: expected a ";"

/usr/local/cuda/include/surface_functions.h 在错误行有这样的东西:

template<> __device__ __cudart_builtin__ char surf1Dread(surface<void, cudaSurfaceType1D> surf, int x, enum cudaSurfaceBoundaryMode mode) asm("__surf1Dread_char") ;

有什么建议吗?

最佳答案

因此,当您的环境在编译过程中使用不同版本的 nvcc 二进制文件和 cuda includes 文件时,就会发生这种情况。

Darknet 使用 /usr/local/cuda/include/ 作为它的包含路径 但在执行 nvcc 二进制文件时依赖于你的PATH。它可能属于您在系统中安装的另一个 cuda。

为了避免这种情况,强制您的 shell 在/usr/local/cuda/bin/nvcc 中搜索 nvcc。

这可以通过修改 Makefile 中的 nvcc 路径来完成:

替换 NVCC=nvcc NVCC=/usr/local/cuda/bin/nvcc

或通过为 make 命令修改 PATH 变量(更简单且与 session 相关)

PATH=/usr/local/cuda/bin:$PATH make

关于c++ - Ubuntu 16.04,Nvidia toolkit 8.0 RC,暗网编译错误: expected a ";",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39287744/

相关文章:

c++ - 为什么我可以使用 std 命名空间中的名称,即使我是 "using namespace std;"?

c++ - 在类 B 中创建类 A 所拥有的对象,其中 B 不知道 A

ubuntu - Vagrant 1.1.5 中的共享文件夹权限

linux - 用于网络播放的链接视频(flash/html5 相当于 mplayer?)

matlab - 相当于 CUDA 中 Matlab 的 find 命令

c++ - 如何在 Windows 上为 C++ 配置 Visual Studio Code?

linux - 通过 jenkins 构建步骤传递密码

c++ - CUDA & VS2010问题

cuda - CUDA 中的原子操作?要包含哪个头文件?

c++ - 如何在 C++ 程序中添加命令行参数?