CentOS7.5で提供されているGCCが GCC 4.8.5 である。アプリケーションによってはこれ以上のバージョンが要求される場合がある。
なら別途GCCをコンパイルして用意するのが手なのだろうが、ハードルが高い。
なので、devtoolset パッケージを使って容易に 「GCC 4.9以降」を使えるようにしてみた。

pkgs.orgを拝見すると

devtoolsetバージョン
devtoolset-3GCC version 4.9
devtoolset-4GCC version 5
devtoolset-6GCC version 6
devtoolset-7GCC version 7

の対応みたい。細かいバージョン番号は省いてます。GCC以外にも c++、gfortran が用意されている
さらにインストール先は

/opt/rh/devtoolset-{3,4,6,7}/root/usr/{bin,lib,libexec,share}

と別の場所にルート(/)を置く感じで、まるで chroot みたい。

インストール

ここでは devtoolset-3 をインストールしてみます。
まずは devtoolset パッケージのリポジトリをインストールします。

[root@c ~]# yum install centos-release-scl-rh

これで /etc/yum.repos.d に新たなリポジトリが追加されます。

[root@c ~]# cat /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
# CentOS-SCLo-rh.repo
#
# Please see http://wiki.centos.org/SpecialInterestGroup/SCLo for more
# information
 
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://mirror.centos.org/centos/7/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
 :
 :
[root@c ~]#

centos-sclo-rhリポジトリが有効であると確認して下記をインストールします

  1
  2
  3
  4
  5
[root@c ~]# yum install \
            devtoolset-3-gcc \
            devtoolset-3-gcc-c++ \
            devtoolset-3-gcc-gfortran \
            devtoolset-3-binutils

実際にこのコマンドを使用するにはまじないが必要で同時にインストールされる「scl-utils」の「scl」コマンドで有効にする

[root@c ~]# scl enable devtoolset-3 bash
 
[root@c ~]# which gcc
/opt/rh/devtoolset-3/root/usr/bin/gcc
[root@c ~]# gcc --version
gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
[root@c ~]# which ar
/opt/rh/devtoolset-3/root/usr/bin/ar
 
[root@c ~]#

ここで whereis コマンドを使ってみると

[root@c ~]# whereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc /opt/rh/devtoolset-3/root/usr/bin/gcc /usr/share/man/man1/gcc.1.gz
[root@c ~]#

となるので、基本はPATH環境変数の調整のみと思われる

使い方

scl enable devtoolset-3 bash

でその環境になる。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2018-08-12 (日) 02:11:37 (5d)