【问题标题】:NVCC unistd.h(792): error: expected an identifierNVCC unistd.h(792):错误:需要一个标识符
【发布时间】:2019-02-17 14:06:51
【问题描述】:

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

【问题讨论】:

    标签: cuda linker nvcc unistd.h


    【解决方案1】:

    显示/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 标准标识符(无论是在命令行上,还是在代码中的任何其他位置)。

    【讨论】:

    • 关于link,可能会弄乱这样的结构的是命令行中的这个开关,这很奇怪/好奇:-Dlink
    • @RobertCrovella 我在命令行中滚动的距离不够远,没有注意到这一点。谢谢!答案已更新。
    • 实际上是 '$>:-Dlink>' 搞砸了我的生活。谢谢先生们的帮助,希望这些信息也可以帮助其他人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多