CentOS に Software Collections を使用して新しいバージョンの GCC/G++ コンパイラをインストールする方法です。
標準インストールされるGCC/G++のバージョン
yumの標準リポジトリでインストールされるgcc/gcc-c++
はバージョンが古いです。
# yum install gcc gcc-c++ # gcc -v gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) # g++ -v gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
このままでは C++11/14 に対応してないため、一部のプログラムがコンパイルできないという状況にもなりえます。そのため、Software Collections の Developer Toolset を使用して新しいバージョンのパッケージをインストールしたいと思います。
事前準備として Software Collections ツールをインストールしてください。(依存関係で勝手にインストールされますがこれを使うという意識を持つために)
# yum install scl-utils
Devtoolset-2リポジトリ
Devtoolset-2 のリポジトリを追加してインストールします。
# cd /etc/yum.repos.d/ # wget http://people.centos.org/tru/devtools-2/devtools-2.repo # yum install devtoolset-2-gcc devtoolset-2-binutils # yum install devtoolset-2-gcc-c++ devtoolset-2-gcc-gfortran
/opt/rh/devtoolset-2
以下にインストールされます。
# ll /opt/rh/devtoolset-2/root/usr/bin/gcc -rwxr-xr-x 2 root root 750576 3月 13 01:54 2014 /opt/rh/devtoolset-2/root/usr/bin/gcc # ll /opt/rh/devtoolset-2/root/usr/bin/g++ -rwxr-xr-x 4 root root 754064 3月 13 01:54 2014 /opt/rh/devtoolset-2/root/usr/bin/g++
インストール先を見ても分かる通り、このままでは PATH が通っていませんのでscl enable
コマンドを実行してパッケージを有効化します。devtoolset-2 はインストール先の/opt/rh/devtoolset-2
を指してると思ってください。そのディレクトリ配下にenable
というファイルがあり、これが実行されることで 環境変数 がセットされます。
Devtoolset-2 では GCC 4.8 がインストールされますので、C++11 にも対応していますね。
# scl enable devtoolset-2 bash # gcc -v gcc version 4.8.2 20140120 (Red Hat 4.8.2-15) (GCC) # g++ -v gcc version 4.8.2 20140120 (Red Hat 4.8.2-15) (GCC)
ただし、これだとシェルを起動するたびに毎回手動でscl enable~
を実行して PATH を通す必要があります。一時的に変えたい場合以外は自動で環境変数をセットするようにしておきます。
# echo 'source /opt/rh/devtoolset-2/enable' >> /etc/profile.d/devtools
Devtoolset-3リポジトリ
現在の最新版は Devtoolset-3 が提供されています。同様にリポジトリを追加してインストールしてみましょう。
# cd /etc/yum.repos.d/ # wget https://copr-fe.cloud.fedoraproject.org/coprs/rhscl/devtoolset-3/repo/epel-6/rhscl-devtoolset-3-epel-6.repo # yum install devtoolset-3-gcc devtoolset-3-binutils # yum install devtoolset-3-gcc-c++ devtoolset-3-gcc-gfortran
/opt/rh/devtoolset-3
以下にインストールされます。Devtoolset-2 との共存も可能です。
# ll /opt/rh/devtoolset-3/root/usr/bin/gcc -rwxr-xr-x 2 root root 842720 6月 19 02:11 2015 /opt/rh/devtoolset-3/root/usr/bin/gcc # ll /opt/rh/devtoolset-3/root/usr/bin/g++ -rwxr-xr-x 4 root root 846112 6月 19 02:11 2015 /opt/rh/devtoolset-3/root/usr/bin/g++
PATH を通す方法も Devtoolset-2 と同じです。Devtoolset-3 では GCC 4.9 がインストールされます。
# scl enable devtoolset-3 bash # gcc -v gcc version 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC) # g++ -v gcc version 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)