環境
$ cat /etc/redhat-release
CentOS release 6.7 (Final)
$ uname -a
Linux XXX 2.6.32-573.8.1.el6.x86_64 #1 SMP Tue Nov 10 18:01:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
この環境ではgccのバージョンが4.4で,正直に言って色々と辛い…
どうにかして新しいツールチェインを使えるようにする.
少なくともC++11が使えるgcc 4.8以上のものが欲しい…
Software Collectionsを使う
Red Hat Software Collections (SCL)の一部として,開発ツールのパッケージ群が配布されているそうだ(SCLが何かはよく知らない…).
パッケージ管理ツールyumが参照するリポジトリ一覧にSCL関連のリポジトリを追加すればyumからパッケージとして扱うことができるようになる.
便利そうなので,SCLを使うことにする.
yumがdevtoolsetリポジトリを見るように設定
比較的新しい開発ツール集のリポジトリとしてdevtoolset-4があるようですが,これよりは古いdevtoolset-3で十分なので,このリポジトリのrepoファイルをダウンロードして,/etc/yum.repos.d/
に置く.
devtoolset-3のrepoファイルへのURLはhttps://copr.fedorainfracloud.org/coprs/rhscl/devtoolset-3/repo/epel-6/rhscl-devtoolset-3-epel-6.repo
.
インストール
次のパッケージで大体のものがインストールできる:
$ yum install scl-utils devtoolset-3-toolchain devtoolset-3-perftools
これらパッケージに何が紐付けられているかはyum deplist
で閲覧できる.
各種設定
devtoolset-3リポジトリのパッケージをインストールしても,そのままでは使用できない.
環境変数の設定はscl
コマンドを使って行うことができる.
詳細はmanを見るとよい.
なおdevtoolset-3リポジトリのパッケージは/opt/rh/devtoolset-3
にインストールされるようで,環境変数を設定するスクリプトは/opt/rh/devtoolset-3/enable
である.
インテルコンパイラとGCCの相性
手元のインテルコンパイラのバージョンは14なのだが,どうやらgcc 4.9との(正確には,mpicc/mpicxxとgcc/g++の)相性が悪いらしい.
これは困った.
devtoolset-2だとgccのバージョンは4.8だそうなので,こちらの方がよいだろうか?…
もう一度インストール
結局,devtoolset-2をインストールすることにした.
devtoolset-2のrepoファイルのURLはhttp://people.centos.org/tru/devtools-2/devtools-2.repo
.
インストールするパッケージ名はdevtoolset-3とほとんど同じで,数字の3を2に変えたものでよい…はずだが,devtoolset-2-perftools
に含まれているdevtoolset-2-systemtap
がインストールできず,それ以外のパッケージを個別にインストールした.
所感
今回は特権があったからSCLを使うという方法を取ったが,無い場合は気合いでどうにかするしかないかもしれない…
ツールをコンパイルして使うだけならば,特権は不要なはずなので,何かしら方法はあるかもしれないけど,非常に手間がかかりそうな気がする.