Introduction

Ubuntu 18.04でパッケージマネージャーからインストールできるgccのバージョンが7になっている。

1
2
3
4
5
$ gcc --version
gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

CUDA 9が6以降のgccでのビルドをサポートしていないため、caffeをビルドしようとするとエラーが起きてします。
が、openposeでビルドするときはこのエラーが起きないんですよね… ちなみにこんなエラー。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ cmake --build . --config Release
[ 1%] Running C++/Python protocol buffer compiler on /media/hdd/work/local/caffe/src/caffe/proto/caffe.proto
Scanning dependencies of target caffeproto
[ 1%] Building CXX object src/caffe/CMakeFiles/caffeproto.dir/__/__/include/caffe/proto/caffe.pb.cc.o
[ 1%] Linking CXX static library ../../lib/libcaffeproto.a
[ 1%] Built target caffeproto
[ 1%] Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile_1.dir/util/cuda_compile_1_generated_math_functions.cu.o
In file included from /usr/include/host_config.h:50:0,
from /usr/include/cuda_runtime.h:78,
from :0:
/usr/include/crt/host_config.h:121:2: error: #error -- unsupported GNU version! gcc versions later than 6 are not supported!
#error -- unsupported GNU version! gcc versions later than 6 are not supported!
^~~~~
CMake Error at cuda_compile_1_generated_math_functions.cu.o.Release.cmake:219 (message):
Error generating
/media/hdd/work/local/caffe/build/src/caffe/CMakeFiles/cuda_compile_1.dir/util/./cuda_compile_1_generated_math_functions.cu.o

src/caffe/CMakeFiles/caffe.dir/build.make:497: recipe for target 'src/caffe/CMakeFiles/cuda_compile_1.dir/util/cuda_compile_1_generated_math_functions.cu.o' failed
make[2]: *** [src/caffe/CMakeFiles/cuda_compile_1.dir/util/cuda_compile_1_generated_math_functions.cu.o] Error 1
CMakeFiles/Makefile2:235: recipe for target 'src/caffe/CMakeFiles/caffe.dir/all' failed
make[1]: *** [src/caffe/CMakeFiles/caffe.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

とにかくこの対処方法。

How to

対処として、古いgccをインストールしてそっちに切り替える方法もありますが、面倒なのでこれはパス。
なので、CUDA側のgccバージョンチェックを無効化する方法を採用します。

1
$ sudo vi /usr/include/crt/host_config.h

で設定ファイルを開き、下記チェック個所をコメントアウトします。

1
2
- #error -- unsupported GNU version! gcc versions later than 6 are not supported!
+ //#error -- unsupported GNU version! gcc versions later than 6 are not supported!