CentOS7のyumリポジトリでインストールできるGCCのバージョンは、4.8です。
今回は、GCCのバージョン4.9.4をCentOS7にインストールする方法について説明します。
devtoolsetを利用してCentOS7にgcc4.9をインストールする方法
Software Collections(SCL)のdevtoolset-3を利用してCentOS7にgcc4.9をインストールする。
yum install centos-release-scl
yum install devtoolset-3-gcc*
scl enable devtoolset-3 bash
# yum install centos-release-scl # yum install devtoolset-3-gcc* 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * centos-sclo-rh: ftp.iij.ad.jp * centos-sclo-sclo: ftp.iij.ad.jp * epel: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp パッケージ devtoolset-3-gcc* は利用できません。 エラー: 何もしません
Software COLLECTIONSの公式サイトを見ると、devtoolset-3 は、現在サポートされていないようです。
https://www.softwarecollections.org/en/
devtoolset | GCCバージョン | サポート |
devtoolset-3 | 4.9 | 終了 |
devtoolset-4 | 5 | 終了 |
devtoolset-6 | 6 | 終了 |
devtoolset-7 | 7 | |
devtoolset-8 | 8 | |
devtoolset-9 | 9 |
gcc4.9.4 のソースをビルドしてインストール
gcc 4.9のバイナリは提供されていないので、gcc 4.9.4 のソースをビルドしてインストールします。
1. wgetでソースをダウンロード
2. tar で解凍
3. 関連ファイルをダウンロード
4. configureコマンドで環境にあったmakefileを作成
5. make
6. make install でインストール
gcc 4.8と共存が不要なら削除
gcc 4.8が不要なら、間違えやすいので削除します。
# # yum list installed | grep gcc # yum remove gcc libgcc
ソースからビルド手順
# # wget http://ftp.riken.jp/GNU/gcc/gcc-4.9.4/gcc-4.9.4.tar.bz2 # tar xvfj gcc-4.9.4.tar.bz2 # cd gcc-4.9.4 # ./contrib/download_prerequisites #./configure --prefix=/usr/local/gcc-4.9.4 --enable-languages=c,c++ --disable-multilib # export LD_LIBRARY_PATH=/usr/local/gcc-4.9.4/lib:$LD_LIBRARY_PATH # export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu # export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu # export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu # make -j 4 # make install
オプションとハマるところの補足
■configureのオプション説明
・ –enable-languages でインストールする言語を指定。c,c++
・64ビット版を作成するので、 –disable-multilib オプション指定。付けないと 32bit ライブラリを探して不足エラーがでるので回避
■wgetで失敗
会社など使えるproxyサーバが決まっている場合、
/etc/wgetrc に proxy=http://xxxxx:8080 などを設定
■download_prerequisitesでエラー
直接、外部のftpサーバに接続できない場合にftpでエラーなります。
./contrib/download_prerequisites ファイルの内容をftp からhttpに書き換える。
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2
↓
wget http://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2
ユーザごとの設定
<.bash_profile>
export PATH=/usr/local/gcc-4.9.4/bin:$PATH
古いgcc4.8も残して環境変数PATHで切り替えも可能。
# # which gcc /usr/bin/gcc # gcc -v gcc バージョン 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) # /usr/local/gcc-4.9.4/bin/gcc -v 組み込み spec を使用しています。 COLLECT_GCC=/usr/local/gcc-4.9.4/bin/gcc COLLECT_LTO_WRAPPER=/usr/local/gcc-4.9.4/libexec/gcc/x86_64-unknown-linux-gnu/4.9.4/lto-wrapper ターゲット: x86_64-unknown-linux-gnu configure 設定: ./configure --prefix=/usr/local/gcc-4.9.4 --enable-languages=c,c++ --disable-multilib --disable-bootstrap スレッドモデル: posix gcc バージョン 4.9.4 (GCC)
まとめ
今回、CentOSに古いバージョンのgccをインストールしました。
基本的な考え方は、yum や Software COLLECTIONSのdevtoolsetで提供されていれば、それらを使う。
存在しなければ、gccのソースからビルドすればいいと思います。
各バージョンのソースが公開されています。