今,Fedora 23はgccのバージョンが5.3.1なので,そのままchainerをインストールしようとすると,コンパイルエラーが発生する.
原因は,以下の2点
- CUDAがgcc 4.9までしか対応していないこと.
- enumの扱いが変わったこと.
CUDAのgcc対応
コードを見ると,
/usr/local/cuda/include/host_config.h
の115行目に,GCCのバージョンが4.9より大きいとエラーになるような #error が書かれている.
仕方ないので,これをコメントアウトして次のようにするとコンパイルが通るようになる.
#error -- unsupported GNU version! gcc versions later than 4.9 are not supported! ↓ //#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!
enumの扱い
元々enumはint型として扱えていたが,それができなくなっている.なので,
typedef enum enum_etype{ a = 1 b = 2, c = 3 } Etype; int main(){ Etype x = 0; }
のようなコードはコンパイルエラーになる.これを防ぐにはgccのオプションに”-fpermissive” をつければ良い.
なので,chainerをインストールする際に,
alias g++="g++ -fpermissive" pip install chainer
としたらいけた.正しいやり方かどうかわからないけど.