NVCC unistd.h(792):错误:预期标识符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NVCC unistd.h(792):错误:预期标识符相关的知识,希望对你有一定的参考价值。

NVCC正在返回一个错误,但几乎没有信息可以继续。在转向所谓的“现代cmake”之前,该项目已经编译完成。我不再使用findCUDA。我已经完成了多次网络搜索,无法找到帮助解决问题的路径。任何帮助都会很棒。谢谢。

[  3%] Building CUDA object CMakeFiles/foo_cuda.dir/src/foo/gpu/gpu_camera.cu.o
/usr/local/cuda/bin/nvcc  -DFOO_DATA_DIR="/home/developer/Data" -DFOO_RESULTS_DIR="/home/developer/Results" -DBAR_GFLAGS_NAMESPACE=google -DBAR_SUITESPARSE_VERSION="5.1.2" -D__CUDACC__ -I/home/developer/Source/Foo/include -I/home/developer/Source/Foo/src -I/home/developer/Source/Foo -I/usr/local/include -I/usr/local/cuda/include -I/home/developer/Source/Foo/SYSTEM -I/usr/include/eigen3  -g -Xcompiler=-fPIC   -w -std=c++14 -Xcompiler=-fopenmp -use_fast_math -Wno-deprecated-declarations --expt-extended-lambda --expt-relaxed-constexpr -dc -Dlink -lcudart -lcudrand -lcudadevrt -lcublas -lcublas_device -gencode arch=compute_30,code=compute_30 -x cu -dc /home/developer/Source/Foo/src/foo/gpu/gpu_camera.cu -o CMakeFiles/foo_cuda.dir/src/foo/gpu/gpu_camera.cu.o
/usr/include/unistd.h(792): error: expected an identifier
答案

显示/usr/include/unistd.h第792行的内容将允许人们更好地猜测答案。

通常这个错误是由你在#include使用冲突的unistd.h之前#define的结果

例如,如果unistd.h的第792行读取:

extern int link (const char *__from, const char *__to);

以前的一些标题做了这个:

#define link 1

然后编译器将看到(预处理后):

extern int 1 (const char *__from, const char *__to);

并将合理地生产error: expected an identifier

诊断这些问题的一种有用方法是运行预处理器并保存所有#defines的值。 GCC:

gcc -E -dD -I... foo.c > foo.e

类似的标志(-E -dD)可能适用于nvcc,或者您可能需要找到相同的东西。

更新:

正如Robert Crovella所说,你的命令行实际上有-Dlink,所以你的unistd.h可能与我的匹配,而extern int 1 (const char ...正是你的编译器在预处理后看到的。

不要那样做!也就是说,不要使用#define标准标识符(在命令行或代码中的任何其他位置)。

以上是关于NVCC unistd.h(792):错误:预期标识符的主要内容,如果未能解决你的问题,请参考以下文章

Theano安装,nvcc不在路径中

Qt交叉编译Raspi3 - 致命错误:unistd.h:没有这样的文件或目录

带有 VS 2013 的 cuda v6.5 nvcc 失败,神秘的消息

fork() 分支超出预期?

void值未如预期地被忽略

预期标量值:MATLAB Coder