当前位置:  开发笔记 > 编程语言 > 正文

由于不支持的gcc编译器版本,Caffe编译失败

如何解决《由于不支持的gcc编译器版本,Caffe编译失败》经验,为你挑选了1个好方法。

我和Caffe编译很困难.不幸的是我没能编译它.

我遵循的步骤:

git clone https://github.com/BVLC/caffe.git
cd caffe
mkdir build
cd build
cmake ..
make all

运行make all失败,并显示以下错误消息:

[  2%] Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/util/cuda_compile_generated_im2col.cu.o
In file included from /usr/include/cuda_runtime.h:59:0,
                 from :0:
/usr/include/host_config.h:82:2: error: #error -- unsupported GNU version! gcc 4.9 and up are not supported!
 #error -- unsupported GNU version! gcc 4.9 and up are not supported!
  ^
CMake Error at cuda_compile_generated_im2col.cu.o.cmake:207 (message):
  Error generating /mydir/caffe/build/src/caffe/CMakeFiles/cuda_compile.dir/util/./cuda_compile_generated_im2col.cu.o

软件版本:

OS : Debian.

gcc版本:5.3.1.

nvcc版本:6.5.12.

cat /proc/driver/nvidia/version 结果:

NVRM version: NVIDIA UNIX x86_64 Kernel Module  352.63  Sat Nov  7 21:25:42 PST 2015
GCC version:  gcc version 4.8.5 (Debian 4.8.5-3) 

试图解决问题

第一次尝试

简单的解决方案通常是最好的解决方案,因此(如此处所示)我试图gcc/usr/include/host_config.h(第82行)注释掉宏检查版本.不幸的是它不起作用,编译失败严重:

1 catastrophic error detected in the compilation of "/tmp/tmpxft_000069c2_00000000-4_im2col.cpp4.ii".

第二次尝试

我试着跑:

cmake -D CMAKE_CXX_COMPILER=g++-4.8 ..
make

但它失败了完全相同的错误信息(即使g++-4.8应该被接受).

第3次尝试

我发现了类似的问题(尽管与Caffe没有关系),我试图按照接受的答案中的建议来解决它.

我做了什么:

    我已经运行了grep -iR "find_package(CUDA" caffe命令并找到了第225行的Cuda.cmake文件.find_package(CUDA 5.5 QUIET)

    我添加set(CUDA_HOST_COMPILER /usr/bin/gcc-4.8)Cuda.cmake,行前行:find_package(CUDA 5.5 QUIET).

    我从build目录中删除了所有内容cmakemake再次运行- 使用和不使用-D CMAKE_CXX_COMPILER=g++-4.8.

不幸的是结果完全一样.Caffe可能会以某种方式覆盖它 - 我没弄清楚如何.

make VERBOSE=1 2>&1 | grep -i compiler-bindir 没有回报.

有趣的是,make VERBOSE=1print命令失败,这是:

/usr/bin/nvcc -M -D__CUDACC__ /mydir/caffe/src/caffe/util/im2col.cu -o /mydir/caffe/build/src/caffe/CMakeFiles/cuda_compile.dir/util/cuda_compile_generated_im2col.cu.o.NVCC-depend -ccbin /usr/bin/cc -m64 -DUSE_LMDB -DUSE_LEVELDB -DUSE_OPENCV -DWITH_PYTHON_LAYER -DGTEST_USE_OWN_TR1_TUPLE -Xcompiler ,\"-fPIC\",\"-Wall\",\"-Wno-sign-compare\",\"-Wno-uninitialized\",\"-O3\",\"-DNDEBUG\" -gencode arch=compute_20,code=sm_21 -Xcudafe --diag_suppress=cc_clobber_ignored -Xcudafe --diag_suppress=integer_sign_change -Xcudafe --diag_suppress=useless_using_declaration -Xcudafe --diag_suppress=set_but_not_used -Xcompiler -fPIC -DNVCC -I/usr/include -I/mydir/caffe/src -I/usr/include -I/mydir/caffe/build/include -I/usr/include/hdf5/serial -I/usr/include/opencv -I/usr/include/atlas -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/mydir/caffe/include -I/mydir/caffe/build

当我--compiler-bindir /usr/bin/gcc-4.8手动添加标志时,它会输出错误:

nvcc fatal   : redefinition of argument 'compiler-bindir'

这可能与此错误报告有关.

编辑:我没有注意到--compiler-bindir并且-ccbin是相同的选项,后者已经在上面的命令中设置失败.当我更改-ccbin /usr/bin/cc-ccbin /usr/bin/gcc-4.8失败的上述命令时,它成功完成.现在我需要在Caffe的CMake文件中找到覆盖-ccbin所有后续Caffe的CMakes的选项.看着cmake/Cuda.cmake:252:list(APPEND CUDA_NVCC_FLAGS ${NVCC_FLAGS_EXTRA}似乎是个好方法.


如何成功完成编译?任何帮助表示赞赏.

相关的SO问题:

host_config.h:不支持的GNU版本!不支持4.9之后的gcc版本.

CUDA 6.5抱怨不支持gcc 4.9 - 该怎么办?.

patryk.beza.. 6

cmake -D CUDA_NVCC_FLAGS="-ccbin gcc-4.8" .. && make导致编译成功.


现在出现了另一个问题:链接谷歌libgflagslibprotobuf失败可能是因为它是用较新gcc版本编译的,但它与问题无关.



1> patryk.beza..:

cmake -D CUDA_NVCC_FLAGS="-ccbin gcc-4.8" .. && make导致编译成功.


现在出现了另一个问题:链接谷歌libgflagslibprotobuf失败可能是因为它是用较新gcc版本编译的,但它与问题无关.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有