Raspberry Pi `GLIBCXX_3.4.21' not foundでつまづいた
環境
Raspberry Pi
OS:jessie (8)
エラー内容
nodeを使ってとあるプログラムをうごかそうとしたら下記のようなエラーがでてきてかなり詰まったのでメモ
Error: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required
調査
この辺を参考にしてみた
https://qiita.com/locatw/items/9ada8cd9048819ad401f
$sudo find / -name libstdc++.so
/usr/lib/gcc/arm-linux-gnueabihf/4.9/libstdc++.so
たしかにGLIBCXX_3.4.21
はいない
$strings /usr/lib/gcc/arm-linux-gnueabihf/4.9/libstdc++.so | grep GLIBC
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
GLIBC_2.4
GLIBC_2.18
GLIBC_2.17
GLIBCXX_DEBUG_MESSAGE_LENGTH
OSのアップデートをした
https://raspberrypi.stackexchange.com/questions/72177/libstdc-error-glibcxx-3-4-22-not-found?noredirect=1
ここをみてたらOSアップデートしたらいいと書いてあったので
8->9.4にアップデートした
$lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (n/a)
Release: 9.4
Codename: n/a
で再び
$strings /usr/lib/gcc/arm-linux-gnueabihf/4.9/libstdc++.so | grep GLIBC
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
GLIBC_2.4
GLIBC_2.18
GLIBC_2.17
GLIBCXX_DEBUG_MESSAGE_LENGTH
いないじゃないか
gcc/g++ 6.3.
と書いてあったので
/usr/lib/gcc/arm-linux-gnueabihf/6.3
みたいなのができたのかなとおもってさがしてみたもののいない・・・・
探してみた結果下記のようだった
…eabihf/4.6.4/ …eabihf/4.7.3/ …eabihf/4.8.4/ …eabihf/4.9.2/
…eabihf/4.6/ …eabihf/4.7/ …eabihf/4.8/ …eabihf/4.9/
gcc6をいれる
一応現在のgccのバージョンを確認
$gcc -dumpversion
4.9.2
ココを参考にいれてみた
http://suka4.blogspot.com/2016/12/raspberry-pi-3-gcc6.html
gccあたりのシンボリックリンクがどうなっているのか確認してみた
gccはどうやらgcc-4.9*
のシンボリックリンクぽい
$ cd /usr/bin
$ ls -la
lrwxrwxrwx 1 root root 7 3月 8 2015 gcc -> gcc-4.9*
-rwxr-xr-x 1 root root 616948 3月 10 2015 gcc-4.8*
-rwxr-xr-x 1 root root 666352 2月 19 2018 gcc-4.9*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-ar -> gcc-ar-4.9*
-rwxr-xr-x 1 root root 24312 3月 10 2015 gcc-ar-4.8*
-rwxr-xr-x 1 root root 24324 2月 19 2018 gcc-ar-4.9*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-nm -> gcc-nm-4.9*
-rwxr-xr-x 1 root root 24264 3月 10 2015 gcc-nm-4.8*
-rwxr-xr-x 1 root root 24276 2月 19 2018 gcc-nm-4.9*
lrwxrwxrwx 1 root root 14 3月 8 2015 gcc-ranlib -> gcc-ranlib-4.9*
-rwxr-xr-x 1 root root 24268 3月 10 2015 gcc-ranlib-4.8*
-rwxr-xr-x 1 root root 24280 2月 19 2018 gcc-ranlib-4.9*
$ sudo apt-get update
$ sudo apt-get install gcc-6 g++-6
ターミナルで実行してるのに初めてこんなグラフィカルなやつが出ることを知りちょっとびびった
NSSを使用している実行中のサービスやプログラムを再起動する必要があります。そうしないと、検索や認証ができなくなる可能性があります
(sshなどのサービスの場合はログインに影響する可能性があります)。
サービスが││再開されるように、スペースで区切られたinit.dスクリプトのリストを見直し、必要に応じて修正してください。
││││注意:sshd / telnetdを再起動しても、既存の接続には影響しないはずです
││││サービスを再起動してGNU libcライブラリをアップグレードする:
よくわからないがとりあえずOK
gcc6がはいったのか一応確認
gcc-6
を確認できた
$ cd /usr/bin
$ ls -la
lrwxrwxrwx 1 root root 7 3月 8 2015 gcc -> gcc-4.9*
-rwxr-xr-x 1 root root 616948 3月 10 2015 gcc-4.8*
-rwxr-xr-x 1 root root 666352 2月 19 2018 gcc-4.9*
lrwxrwxrwx 1 root root 25 3月 1 2018 gcc-6 -> arm-linux-gnueabihf-gcc-6*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-ar -> gcc-ar-4.9*
-rwxr-xr-x 1 root root 24312 3月 10 2015 gcc-ar-4.8*
-rwxr-xr-x 1 root root 24324 2月 19 2018 gcc-ar-4.9*
lrwxrwxrwx 1 root root 28 3月 1 2018 gcc-ar-6 -> arm-linux-gnueabihf-gcc-ar-6*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-nm -> gcc-nm-4.9*
-rwxr-xr-x 1 root root 24264 3月 10 2015 gcc-nm-4.8*
-rwxr-xr-x 1 root root 24276 2月 19 2018 gcc-nm-4.9*
lrwxrwxrwx 1 root root 28 3月 1 2018 gcc-nm-6 -> arm-linux-gnueabihf-gcc-nm-6*
lrwxrwxrwx 1 root root 14 3月 8 2015 gcc-ranlib -> gcc-ranlib-4.9*
-rwxr-xr-x 1 root root 24268 3月 10 2015 gcc-ranlib-4.8*
-rwxr-xr-x 1 root root 24280 2月 19 2018 gcc-ranlib-4.9*
lrwxrwxrwx 1 root root 32 3月 1 2018 gcc-ranlib-6 -> arm-linux-gnueabihf-gcc-ranlib-6*
ようやくGLIBCXX_3.4.21
の存在を確認できた
$ strings /usr/lib/gcc/arm-linux-gnueabihf/6.3.0/libstdc++.so | grep GLIBC
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
GLIBC_2.4
GLIBC_2.18
GLIBC_2.17
GLIBCXX_DEBUG_MESSAGE_LENGTH
シンボリックリンクのはりかえをする
何がおきてるのかよくわからないので一応可視化
$ sudo rm gcc g++
$ ls -la
-rwxr-xr-x 1 root root 616948 3月 10 2015 gcc-4.8*
-rwxr-xr-x 1 root root 666352 2月 19 2018 gcc-4.9*
lrwxrwxrwx 1 root root 25 3月 1 2018 gcc-6 -> arm-linux-gnueabihf-gcc-6*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-ar -> gcc-ar-4.9*
-rwxr-xr-x 1 root root 24312 3月 10 2015 gcc-ar-4.8*
-rwxr-xr-x 1 root root 24324 2月 19 2018 gcc-ar-4.9*
lrwxrwxrwx 1 root root 28 3月 1 2018 gcc-ar-6 -> arm-linux-gnueabihf-gcc-ar-6*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-nm -> gcc-nm-4.9*
-rwxr-xr-x 1 root root 24264 3月 10 2015 gcc-nm-4.8*
-rwxr-xr-x 1 root root 24276 2月 19 2018 gcc-nm-4.9*
lrwxrwxrwx 1 root root 28 3月 1 2018 gcc-nm-6 -> arm-linux-gnueabihf-gcc-nm-6*
lrwxrwxrwx 1 root root 14 3月 8 2015 gcc-ranlib -> gcc-ranlib-4.9*
-rwxr-xr-x 1 root root 24268 3月 10 2015 gcc-ranlib-4.8*
-rwxr-xr-x 1 root root 24280 2月 19 2018 gcc-ranlib-4.9*
lrwxrwxrwx 1 root root 32 3月 1 2018 gcc-ranlib-6 -> arm-linux-gnueabihf-gcc-ranlib-6*
シンボリックリンク張替えて
$ sudo ln -s gcc-6 gcc
$ ls -la
lrwxrwxrwx 1 root root 5 9月 23 22:09 gcc -> gcc-6*
-rwxr-xr-x 1 root root 616948 3月 10 2015 gcc-4.8*
-rwxr-xr-x 1 root root 666352 2月 19 2018 gcc-4.9*
lrwxrwxrwx 1 root root 25 3月 1 2018 gcc-6 -> arm-linux-gnueabihf-gcc-6*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-ar -> gcc-ar-4.9*
-rwxr-xr-x 1 root root 24312 3月 10 2015 gcc-ar-4.8*
-rwxr-xr-x 1 root root 24324 2月 19 2018 gcc-ar-4.9*
lrwxrwxrwx 1 root root 28 3月 1 2018 gcc-ar-6 -> arm-linux-gnueabihf-gcc-ar-6*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-nm -> gcc-nm-4.9*
-rwxr-xr-x 1 root root 24264 3月 10 2015 gcc-nm-4.8*
-rwxr-xr-x 1 root root 24276 2月 19 2018 gcc-nm-4.9*
lrwxrwxrwx 1 root root 28 3月 1 2018 gcc-nm-6 -> arm-linux-gnueabihf-gcc-nm-6*
lrwxrwxrwx 1 root root 14 3月 8 2015 gcc-ranlib -> gcc-ranlib-4.9*
-rwxr-xr-x 1 root root 24268 3月 10 2015 gcc-ranlib-4.8*
-rwxr-xr-x 1 root root 24280 2月 19 2018 gcc-ranlib-4.9*
lrwxrwxrwx 1 root root 32 3月 1 2018 gcc-ranlib-6 -> arm-linux-gnueabihf-gcc-ranlib-6*
$ sudo ln -s g++-6 g++
$ ls -la
lrwxrwxrwx 1 root root 5 9月 23 22:09 gcc -> gcc-6*
-rwxr-xr-x 1 root root 616948 3月 10 2015 gcc-4.8*
-rwxr-xr-x 1 root root 666352 2月 19 2018 gcc-4.9*
lrwxrwxrwx 1 root root 25 3月 1 2018 gcc-6 -> arm-linux-gnueabihf-gcc-6*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-ar -> gcc-ar-4.9*
-rwxr-xr-x 1 root root 24312 3月 10 2015 gcc-ar-4.8*
-rwxr-xr-x 1 root root 24324 2月 19 2018 gcc-ar-4.9*
lrwxrwxrwx 1 root root 28 3月 1 2018 gcc-ar-6 -> arm-linux-gnueabihf-gcc-ar-6*
lrwxrwxrwx 1 root root 10 3月 8 2015 gcc-nm -> gcc-nm-4.9*
-rwxr-xr-x 1 root root 24264 3月 10 2015 gcc-nm-4.8*
-rwxr-xr-x 1 root root 24276 2月 19 2018 gcc-nm-4.9*
lrwxrwxrwx 1 root root 28 3月 1 2018 gcc-nm-6 -> arm-linux-gnueabihf-gcc-nm-6*
lrwxrwxrwx 1 root root 14 3月 8 2015 gcc-ranlib -> gcc-ranlib-4.9*
-rwxr-xr-x 1 root root 24268 3月 10 2015 gcc-ranlib-4.8*
-rwxr-xr-x 1 root root 24280 2月 19 2018 gcc-ranlib-4.9*
lrwxrwxrwx 1 root root 32 3月 1 2018 gcc-ranlib-6 -> arm-linux-gnueabihf-gcc-ranlib-6*
再びバージョンを確認
$ gcc -dumpversion
6.3.0
$ gcc -dumpversion
6.3.0
変更完了した
長かった・・・・
参考文献
Author And Source
この問題について(Raspberry Pi `GLIBCXX_3.4.21' not foundでつまづいた), 我々は、より多くの情報をここで見つけました https://qiita.com/nakagawa1017/items/c4553ec3cf4120c54cc8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .