假设我具有以下本地gcc,g ++版本:
$ gcc -v
$ g++ -v
gcc version 6.3.1
与编译器版本相比,我不了解以下内容的关系和含义:
这是什么意思?
/usr/lib64/libstdc++.so.6
尝试运行二进制文件时出现此错误,GLIBCXX_3.4.20
指的是什么?为什么数字以3开头?
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
这是什么?
$ 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
ldd版本怎么样?
ldd --version
ldd (GNU libc) 2.17
我无法将所有这些版本号链接在一起。
答案 0 :(得分:1)
我无法将所有这些版本号链接在一起。
正如评论中已经提到的,ABI page告诉您GLIBCXX_...
和g++
版本之间的关系。 GLIBCXX_3.4.20
对应于g++-4.9.0
。
由于您拥有g++-6.3.1
,因此应该其中有libstdc++.so.6
的{{1}}版本,但显然没有。
您似乎拥有GLIBCXX_3.4.22
的多个版本:一个在libstdc++.so.6
中,另一个在/lib64
中。我猜他们中的一个很旧,根本不应该在系统上。
P.S。 GLIBC的版本与您的问题完全无关,并且与您的问题无关。
答案 1 :(得分:0)
GLIBC_
和GLIBCXX_
符号版本没有内在联系。 GLIBC_
属于glibc,GLIBCXX_
属于libstdc ++。可以针对许多不同的glibc版本构建libstdc ++,这可能会导致使用不同的GLIBC_
版本引用,但是GLIBCXX_
版本集并不会因此改变。