1. nakagawa1017

    Posted

    nakagawa1017
Changes in title
+Raspberry Pi `GLIBCXX_3.4.21' not foundでつまづいた
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,301 @@
+#環境
+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
+```
+
+ターミナルで実行してるのに初めてこんなグラフィカルなやつが出ることを知りちょっとびびった
+![スクリーンショット 2018-09-23 21.33.24.png](https://qiita-image-store.s3.amazonaws.com/0/176479/a913ce18-c145-a083-4be0-ed2f397abe53.png)
+
+```
+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
+```
+
+変更完了した
+長かった・・・・
+
+
+# 参考文献
+http://suka4.blogspot.com/2016/12/raspberry-pi-3-gcc6.html