複数バージョンの gcc/c++/g++ を共存させる
gcc が、make uninstall に対応していないため、ソースのインストール/アンインストールを管理する、Porg を使用。
・インストール[root]# tar xvfz porg-0.10.tar.gz [root]# cd porg-0.10 [root]# ./configure --disable-grop(Porg の GUI 版をインストールしない) [root]# make -j3 [root]# make -j3 check [root]# make -j3 install [root]# porg -lp porg-0.10 make install ・・・ Porg 自身も管理・ソフトウェアのインストール
[root]# porg -lp 管理名 make install -l : ログ出力(/var/log/porg/管理名 に出力) -p : 管理名指定・管理しているソフトウェア一覧
[root]# porg -a -F -d -s -a : 全て -F : インストールされているファイル数 -d : インストールされた日付 -s : 占有しているサイズ・管理しているソフトウェアのファイル一覧
[root]# porg -fs 管理名・ソフトウェアのアンインストール
[root]# porg -r 管理名
[root]# ls -l /usr/lib64/libstdc*
lrwxrwxrwx. 1 root root /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19 -rwxr-xr-x. 1 root root /usr/lib64/libstdc++.so.6.0.19
[root]# strings /usr/lib64/libstdc++.so.6 | grep -i glibcxx
GLIBCXX_3.4 GLIBCXX_3.4.1 . GLIBCXX_3.4.19
[root]# yum install glibc glibc-devel [root]# yum install mpfr mpfr-devel [root]# tar xvfj gcc-4.4.7.tar.bz2 [root]# cd gcc-4.4.7 [root]# ./configure --program-suffix=-4.4 --disable-multilib(32bit または 64bit のみ) [root]# make -j3 -s(gcc-5.x.x ではエラー gcc-4.x.x で make する) [root]# porg -lp gcc-4.4.7 make install [root]# cd .. [root]# rm -vrf gcc-4.4.7 [root]# tar xvfj gcc-4.9.4.tar.bz2 [root]# cd gcc-4.9.4 [root]# ./contrib/download_prerequisites # 依存パッケージインストール [root]# ./configure --program-suffix=-4.9 --disable-multilib [root]# make -j3 -s [root]# porg -lp gcc-4.9.4 make install [root]# cd .. [root]# rm -vrf gcc-4.9.4 [root]# tar xvfj gcc-5.4.0.tar.bz2 [root]# cd gcc-5.4.0 [root]# ./contrib/download_prerequisites [root]# ./configure --program-suffix=-5.4 --disable-multilib [root]# make -j3 -s [root]# porg -lp gcc-5.4.0 make install [root]# cd .. [root]# rm -vrf gcc-5.4.0 [root]# tar xvfj gcc-6.1.0.tar.bz2 [root]# cd gcc-6.1.0 [root]# ./contrib/download_prerequisites [root]# ./configure --program-suffix=-6.1 --disable-multilib [root]# make -j3 -s [root]# porg -lp gcc-6.1.0 make install [root]# cd .. [root]# rm -vrf gcc-6.1.0 [root]# tar xvfj gcc-6.2.0.tar.bz2 [root]# cd gcc-6.2.0 [root]# ./contrib/download_prerequisites [root]# ./configure --program-suffix=-6.2 --disable-multilib [root]# make -j3 -s [root]# porg -lp gcc-6.2.0 make install [root]# cd .. [root]# rm -vrf gcc-6.2.0 [root]# gcc --version # gcc (GCC) 4.8.5 [root]# gcc-4.4 --version # gcc-4.4 (GCC) 4.4.7 [root]# gcc-4.9 --version # gcc-4.9 (GCC) 4.9.4 [root]# gcc-5.4 --version # gcc-5.4 (GCC) 5.4.0 [root]# gcc-6.1 --version # gcc-6.1 (GCC) 6.1.0 [root]# gcc-6.2 --version # gcc-6.2 (GCC) 6.2.0 [root]# c++ --version # c++ (GCC) 4.8.5 [root]# c++-4.4 --version # c++-4.4 (GCC) 4.4.7 [root]# c++-4.9 --version # c++-4.9 (GCC) 4.9.4 [root]# c++-5.4 --version # c++-5.4 (GCC) 5.4.0 [root]# c++-6.1 --version # c++-6.1 (GCC) 6.1.0 [root]# c++-6.2 --version # c++-6.2 (GCC) 6.2.0 [root]# g++ --version # g++ (GCC) 4.8.5 [root]# g++-4.4 --version # g++-4.4 (GCC) 4.4.7 [root]# g++-4.9 --version # g++-4.9 (GCC) 4.9.4 [root]# g++-5.4 --version # g++-5.4 (GCC) 5.4.0 [root]# g++-6.1 --version # g++-6.1 (GCC) 6.1.0 [root]# g++-6.2 --version # g++-6.2 (GCC) 6.2.0
[root]# ldconfig -v | grep libstdc
libstdc++.so.6 -> libstdc++.so.6.0.19
[root]# updatedb
[root]# locate libstdc++.so.6
/usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.0.13 /usr/lib64/libstdc++.so.6.0.19 /usr/local/lib64/libstdc++.so.6 /usr/local/lib64/libstdc++.so.6.0.20 /usr/local/lib64/libstdc++.so.6.0.20-gdb.py /usr/local/lib64/libstdc++.so.6.0.21 /usr/local/lib64/libstdc++.so.6.0.21-gdb.py /usr/local/lib64/libstdc++.so.6.0.22 /usr/local/lib64/libstdc++.so.6.0.22-gdb.py
[root]# vim /etc/ld.so.conf.d/local.conf
/usr/local/lib64
[root]# ldconfig
[root]# ldconfig -v | grep libstdc
libstdc++.so.6 -> libstdc++.so.6.0.22 libstdc++.so.6 -> libstdc++.so.6.0.21 libstdc++.so.6 -> libstdc++.so.6.0.19
/usr/local/lib64 に OS 標準より古いバージョン(libstdc++.so.6.0.13)のみだと /usr/local/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found が出現して、firefox が起動しない、cmake エラーなどの不具合が起こる。
[root]# ls -l /usr/local/lib64/libstdc*
lrwxrwxrwx 1 root root /usr/local/lib64/libstdc++.so.6 -> libstdc++.so.6.0.22 -rwxr-xr-x 1 root root /usr/local/lib64/libstdc++.so.6.0.20 -rwxr-xr-x 1 root root /usr/local/lib64/libstdc++.so.6.0.21 -rwxr-xr-x 1 root root /usr/local/lib64/libstdc++.so.6.0.22
[root]# strings /usr/local/lib64/libstdc++.so.6 | grep -i glibcxx
GLIBCXX_3.4 GLIBCXX_3.4.1 . GLIBCXX_3.4.22
alternatives にて、バージョンを変更
・gcc# デフォルトの gcc を移動 [root]# mv -v /usr/bin/gcc /usr/bin/gcc-4.8 # リストに追加 [root]# alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 48(優先度) [root]# alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc-4.4 44(優先度) [root]# alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc-4.9 49(優先度) [root]# alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc-5.4 54(優先度) [root]# alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc-6.1 61(優先度) [root]# alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc-6.2 62(優先度) [root]# alternatives --remove gcc /usr/local/bin/gcc-4.9 # 削除する場合 [root]# alternatives --config gcc # 手動選択 [root]# alternatives --auto gcc # 自動選択 [root]# alternatives --display gcc # 確認 [root]# gcc --version・c++
# デフォルトの c++ を移動 [root]# mv -v /usr/bin/c++ /usr/bin/c++-4.8 # リストに追加 [root]# alternatives --install /usr/bin/c++ c++ /usr/bin/c++-4.8 48(優先度) [root]# alternatives --install /usr/bin/c++ c++ /usr/local/bin/c++-4.4 44(優先度) [root]# alternatives --install /usr/bin/c++ c++ /usr/local/bin/c++-4.9 49(優先度) [root]# alternatives --install /usr/bin/c++ c++ /usr/local/bin/c++-5.4 54(優先度) [root]# alternatives --install /usr/bin/c++ c++ /usr/local/bin/c++-6.1 61(優先度) [root]# alternatives --install /usr/bin/c++ c++ /usr/local/bin/c++-6.2 62(優先度) [root]# alternatives --remove c++ /usr/local/bin/c++-4.9 # 削除する場合 [root]# alternatives --config c++ # 手動選択 [root]# alternatives --auto c++ # 自動選択 [root]# alternatives --display c++ # 確認 [root]# c++ --version・g++
# デフォルトの g++ を移動 [root]# mv -v /usr/bin/g++ /usr/bin/g++-4.8 # リストに追加 [root]# alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 48(優先度) [root]# alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++-4.4 44(優先度) [root]# alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++-4.9 49(優先度) [root]# alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++-5.4 54(優先度) [root]# alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++-6.1 61(優先度) [root]# alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++-6.2 62(優先度) [root]# alternatives --remove g++ /usr/local/bin/g++-4.9 # 削除する場合 [root]# alternatives --config g++ # 手動選択 [root]# alternatives --auto g++ # 自動選択 [root]# alternatives --display g++ # 確認 [root]# g++ --version
[root]# vim /etc/yum.conf [main] exclude=gcc*・dnf
[root]# vim /etc/dnf/dnf.conf [main] exclude=gcc*