gcc-10.1.0をCentOS7にソースインストール
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
覚書です。
ところどころ省いています。
実践環境で使う場合はご注意ください。
目的
cmake-3.17.2 をインストールしようとしたところ 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に対応したものが必要とのこと。
特徴
- ソースコードからのインストール
- 複数バージョンの共存
特定バージョンでの開発や動作確認など開発環境での用途を目的としています。
環境
実施日 | 2020-5-20 |
サーバ | さくらのVPS 2G |
OS | CentOS 7.7 |
cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
rpm -qa | grep centos-release
centos-release-7-8.2003.0.el7.centos.x86_64
事前準備
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-10.1.0
公式サイトからダウンロードして、/tmp にアップロード
GCCの公式サイトに行くとダウンロードページへのリンクがあります。
トップページ右側の青いところ「Download」の「Mirrors」をクリック。
Japan: ftp.tsukuba.wide.ad.jp, ・・・ のところをクリック。
releases/ をクリック。
gcc-10.1.0/ をクリック。
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-10.1.0/gcc-10.1.0.tar.gz
「gcc-10.1.0.tar.gz」をクリックしてダウンロードし、次の場所にアップロードします。
/tmp/gcc-10.1.0.tar.gz
※ダウンロードしたファイルは100MBちょっとなので、異常に巨大なファイルをダウンロードしていたら壊れている可能性大です。Japan以外を試してみます。
インストール
ls -la /usr/local/src
ls -la /usr/local/lib
mkdir /usr/local/src/gcc-10.1.0
cp /tmp/gcc-10.1.0.tar.gz /usr/local/src/gcc-10.1.0/gcc-10.1.0.tar.gz
cd /usr/local/src/gcc-10.1.0
tar xvzf gcc-10.1.0.tar.gz
cd gcc-10.1.0
./contrib/download_prerequisites
./configure --enable-languages=c,c++ --prefix=/usr/local/lib/gcc-10.1.0 --disable-bootstrap --disable-multilib
make
make install
/usr/local/lib/gcc-10.1.0/bin/gcc -v
/usr/local/lib/gcc-10.1.0/bin/g++ -v
エラー対応
./contrib/download_prerequisites
で次のようなエラーが出たときはbzip2をインストールします。
tar (child): lbzip2: exec
yum install bzip2
libstdc++ の入れ替え
インストール状況を確認
ls -la /usr/local/lib/gcc-10.1.0/lib64/libstd*
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLLIBCXX_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_DEBUG_MESSAGE_LENGTH
libstdc++.so.6.0.28 をコピー
cp /usr/local/lib/gcc-10.1.0/lib64/libstdc++.so.6.0.28 /usr/lib64
確認
ls -la /usr/lib64/libstd*
lrwxrwxrwx. 1 root root 19 12月 19 13:28 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 991616 8月 7 2019 /usr/lib64/libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 16644856 5月 20 12:35 /usr/lib64/libstdc++.so.6.0.28
入れ替え
cd /usr/lib64
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s libstdc++.so.6.0.28 libstdc++.so.6
確認
ls -la /usr/lib64/libstd*
lrwxrwxrwx. 1 root root 19 5月 20 12:37 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.28
-rwxr-xr-x. 1 root root 991616 8月 7 2019 /usr/lib64/libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 16644856 5月 20 12:35 /usr/lib64/libstdc++.so.6.0.28
lrwxrwxrwx. 1 root root 19 12月 19 13:28 /usr/lib64/libstdc++.so.6.bak -> libstdc++.so.6.0.19
確認
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_3.4.27
GLIBCXX_3.4.28
GLIBCXX_DEBUG_MESSAGE_LENGTH
(以下省略)