gcc-9.1.0をCentOS6にソースインストール
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
覚書です。
ところどころ省いています。
実践環境で使う場合はご注意ください。
※本記事より新しい記事があります。
gcc-10.1.0をCentOS6にソースインストール
目的
cmake-3.14.5 をインストールしようとしたところ configure で次のエラーが発生しました。
---------------------------------------------
CMake 3.14.5, Copyright 2000-2019 Kitware, Inc. and Contributors
Found GNU toolchain
C compiler on this system is: gcc
---------------------------------------------
Error when bootstrapping CMake:
Cannot find a C++ compiler that supports both C++11 and the specified C++ flags.
Please specify one using environment variable CXX.
The C++ flags are "".
They can be changed using the environment variable CXXFLAGS.
See cmake_bootstrap.log for compilers attempted.
---------------------------------------------
C++のコンパイラが古いので、C++11に対応したものが必要とのこと。
特徴
- ソースコードからのインストール
- 複数バージョンの共存
特定バージョンでの開発や動作確認など開発環境での用途を目的としています。
環境
実施日 | 2019-6-21 |
サーバ | さくらのVPS 2G |
OS | CentOS 6.10 |
cat /etc/redhat-release
CentOS release 6.10 (Final)
rpm -qa | grep centos-release
centos-release-scl-7-4.el6.centos.noarch
centos-release-6-10.el6.centos.12.3.x86_64
centos-release-scl-rh-2-4.el6.centos.noarch
事前準備
gcc の確認
gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
※これは yum で入れたものです。
このバージョンは古くてCMakeには使えませんが、本記事でインストールする gcc のコンパイルに必要です。
インストールしていない場合は
# yum install gcc
gcc-c++ の確認
g++ --version
g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
※これは yum で入れたものです。
このバージョンは古くてCMakeには使えませんが、本記事でインストールする gcc のコンパイルに必要です。
インストールしていない場合は
# yum install gcc-c++
gcc-9.1.0
公式サイトからダウンロードして、/tmp にアップロード
GCCの公式サイトに行くとダウンロードページへのリンクがあります。
トップページ右側の青いところ「Download」の「Mirrors」をクリック。
Japan: ftp.tsukuba.wide.ad.jp, ・・・ のところをクリック。
releases/ をクリック。
gcc-9.1.0/ をクリック。
「gcc-9.1.0.tar.gz」をクリックしてダウンロードし、次の場所にアップロードします。
/tmp/gcc-9.1.0.tar.gz
※ダウンロードしたファイルは100MBちょっとなので、異常に巨大なファイルをダウンロードしていたら壊れている可能性大です。Japan以外を試してみます。
インストール
ls -la /usr/local/src
ls -la /usr/local/lib
mkdir /usr/local/src/gcc-9.1.0
cp /tmp/gcc-9.1.0.tar.gz /usr/local/src/gcc-9.1.0/gcc-9.1.0.tar.gz
cd /usr/local/src/gcc-9.1.0
tar xvzf gcc-9.1.0.tar.gz
cd gcc-9.1.0
./contrib/download_prerequisites
./configure --enable-languages=c,c++ --prefix=/usr/local/lib/gcc-9.1.0 --disable-bootstrap --disable-multilib
make
make install
/usr/local/lib/gcc-9.1.0/bin/gcc -v
/usr/local/lib/gcc-9.1.0/bin/g++ -v
エラー対応
./contrib/download_prerequisites
で次のようなエラーが出たときはbzip2をインストールします。
tar (child): lbzip2: exec
yum install bzip2
libstdc++ の入れ替え
インストール状況を確認
ls -la /usr/local/lib/gcc-9.1.0/lib64/libstd*
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
libstdc++.so.6.0.26 をコピー
cp /usr/local/lib/gcc-9.1.0/lib64/libstdc++.so.6.0.26 /usr/lib64
確認
ls -la /usr/lib64/libstd*
lrwxrwxrwx 1 root root 19 7月 29 15:03 2018 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13
-rwxr-xr-x 1 root root 989840 6月 19 21:11 2018 /usr/lib64/libstdc++.so.6.0.13
-rwxr-xr-x 1 root root 17825825 6月 21 16:36 2019 /usr/lib64/libstdc++.so.6.0.26
入れ替え
cd /usr/lib64
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s libstdc++.so.6.0.26 libstdc++.so.6
確認
ls -la /usr/lib64/libstd*
lrwxrwxrwx 1 root root 19 6月 21 16:41 2019 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.26
-rwxr-xr-x 1 root root 989840 6月 19 21:11 2018 /usr/lib64/libstdc++.so.6.0.13
-rwxr-xr-x 1 root root 17825825 6月 21 16:36 2019 /usr/lib64/libstdc++.so.6.0.26
lrwxrwxrwx 1 root root 19 7月 29 15:03 2018 /usr/lib64/libstdc++.so.6.bak -> libstdc++.so.6.0.13
確認
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH