Raspberry Pi`GLIBCXX_3.4.21 'not found로 집어 들었다.

9847 단어 GCCJessieRaspberryPi

환경



Raspberry Pi
OS:jessie (8)

오류 내용



node를 사용하여 어떤 프로그램을 괴롭히려고하면 아래와 같은 오류가 나와 꽤 막혔습니다.
Error: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required 

조사



이 근처를 참고해 보았다
htps : // 이 m / ぉ tw / ms / 9 아다 8cd9048819 아 d401f
$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 업데이트



htps : // et al sp 벨 ry 피. s c x x 짱. 이 m/쿠에 s치온 s/72177/ぃbstdc-에로 rgぃbc×x3-4-22-t후우응d? 노레 ct = 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

여기를 참고로 넣어 보았습니다.
htp : // 스카 4. bgs포 t. m / 2016 / 12 / et al. 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

변경 완료
길었다····

참고문헌

좋은 웹페이지 즐겨찾기