GLIBCXX_3.4.21'not found問題メモ

3465 ワード

問題の説明:
mysql起動タイムズエラー:
/bin/mysqld:/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by/bin/mysqld)
Connection closed by foreign host.lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by/bin/mysqld)
質問:
1.システムでlibstdc++を検索する.so.6、ソフト接続であることが判明
/usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
2、シンボルの表示
[root@localhost src]# 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_DEBUG_MESSAGE_LENGTH
GLIBCXX_の欠落の確認3.4.20,GLIBCXX_3.4.21 libstdc++ライブラリをアップグレードする必要がありますが、rpmインストールパッケージのより高いバージョンは見つかりません.gcc 5をコンパイルする必要がある.4.0以上のバージョンでlibstdc++を生成する.so.6.0.20
3、システムインストールミラーをダウンロードし、yumローカルソースを構成する.キットのインストールを容易にします.
4、インストールキット
yum groupinstall "Development Tools"
yum install glibc-static libstdc++-static

5、gcc 5をダウンロードしてオフラインでコンパイルする.4.0
gccをダウンロード:http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
tar -xvf gcc-5.4.0.tar.bz2 cd gcc-5.4.0 ./contrib/download_prerequisits mkdir build cd build ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib make 
問題:
1、実行./contrib/download_prerequisitsではgmp,mpc,mpfrをリモートでダウンロードする必要があります.環境が特殊で、外部ネットワークに接続できないため、このスクリプトはまだ実行されていません.直接行った後、操作時報が間違っています.
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
自分でgmp,mpc,mpfrソースコードをダウンロードしてコンパイルし、armプラットフォームのエラーはaarch 64アーキテクチャを識別できません.
downloadの表示prerequisitsスクリプト.このスクリプトの内容は次のとおりです.
# General Public License for more details. #  # You should have received a copy of the GNU General Public License # along with this program. If not, see http://www.gnu.org/licenses/.
# If you want to disable Graphite loop optimizations while building GCC, # DO NOT set GRAPHITE_LOOP_OPT as yes so that the ISL package will not # be downloaded. GRAPHITE_LOOP_OPT=yes
if [ ! -e gcc/BASE-VER ] ; then  echo "You must run this script in the top level GCC source directory." exit 1 fi
# Necessary to build GCC. MPFR=mpfr-2.4.2 GMP=gmp-4.3.2 MPC=mpc-0.8.1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2 || exit 1 tar xjf $MPFR.tar.bz2 || exit 1 ln -sf $MPFR mpfr || exit 1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$GMP.tar.bz2 || exit 1 tar xjf $GMP.tar.bz2  || exit 1 ln -sf $GMP gmp || exit 1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPC.tar.gz || exit 1 tar xzf $MPC.tar.gz || exit 1 ln -sf $MPC mpc || exit 1
# Necessary to build GCC with the Graphite loop optimizations. if [ "$GRAPHITE_LOOP_OPT"= "yes"] ; then   ISL=isl-0.14
  wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$ISL.tar.bz2 || exit 1   tar xjf $ISL.tar.bz2  || exit 1   ln -sf $ISL isl || exit 1 fi
手動ダウンロードmpfr-2.4.2.tar.bz2,gmp-4.3.2.tar.bz2,mpc-0.8.1.tar.bz 2をソフトリンクします.
その後configureなどの操作を行い,gccはコンパイルできる.
コンパイルが完了するまでlibstdc++を検索する.so.6.0.20、ここではlibstdc++のライブラリバージョンが見つかりました.so.6.0.21、参照記号GLIBCXX_の存在を確認する3.4.20,GLIBCXX_3.4.21.
libstdc++をコピーします.so.6.0.21から/usr/lib 64/への新しいソフトリンクの確立
rm /usr/lib64/libstdc++.so.6
ln -s/usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.21
再起動してもエラーは発生しません.