Ubuntu 16.04,Nvidia 工具包 8.0 RC,暗网编译错误:预期";"

Ubuntu 16.04, Nvidia toolkit 8.0 RC, darknet compilation error: expected a ";"

本文关键字:编译 错误 预期 RC Nvidia 工具包 Ubuntu      更新时间:2023-10-16

我正在用GPU支持Ubuntu 16.04上编译Darknet。Nvidial toolkit version 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 在编译过程中包含文件时,就会发生这种情况。

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

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

这可以通过破解Makefile中的nvcc路径来实现:

学校网站NVCC = NVCC =/usr/地方/cuda/bin/NVCC

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

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

如果您安装了几个版本的CUDA并且需要它们(像我一样),我建议在您的(BASH) RC中添加以下内容:

# DARKNET
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

来源的RC('。~/.bashrc')和编译工作!

这个错误是由于nvcc 7.5版本

看起来Cuda工具包8.0 RC安装通过deb文件没有nvcc版本8我已经通过cuda_8.0.27_linux.run installed重新安装了cuda,它现在为我工作了