Tech

CentOS7にgcc4.9をインストール

CentOS7 gcc4.9 install

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のソースからビルドすればいいと思います。
各バージョンのソースが公開されています。