It seems that you are running Centos 7. When issuing the command strings /usr/lib/libstdc++.so.6 | grep GLIBCXX in Centos 7, it shows the following output:

GLIBCXX_3.4
_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

This means that right now Centos doesn't support the version of glibc (, i.e., GLIBCXX_3.4.20) that is required by the latest version of Skype (v8.9).

If wish to install Skype in Centos at the moment, you can have a look at the nux repo which hosts a precompiled version of skype (probably an older version). Or you could always build the latest glibc from source and then try to install Skype.

Answer from Ombrophile on Stack Exchange
🌐
GitHub
github.com › donhui › libstdc-so-for-centos7
GitHub - donhui/libstdc-so-for-centos7: centos7 libstdc++.so.6(x86_64 and aarch64)
centos7 libstdc++.so.6(x86_64 and aarch64). Contribute to donhui/libstdc-so-for-centos7 development by creating an account on GitHub.
Author   donhui
🌐
LinuxQuestions.org
linuxquestions.org › questions › centos-111 › centos-7-4-requires-libstdc-so-6-glibcxx_3-4-20-64bit-4175616769
Centos 7.4 Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
January 11, 2017 - I try to update the skype. I got following error. Error: Package: skypeforlinux-8.9.0.1-1.x86_64 (skype-stable) Requires: libstdc++.so.6(GLIBCXX_3.4.20
🌐
RPMfind
rpmfind.net › linux › rpm2html › search.php
RPM resource libstdc .so.6
The search service can find package by either name (apache), provides(webserver), absolute file names (/usr/bin/apache), binaries (gprof) or shared libraries (libXm.so.2) in standard path. It does not support multiple arguments yet · The System and Arch are optional added filters, for example ...
🌐
Pkgs.org
pkgs.org › download › libstdc++.so.6
Libstdc++.so.6 Download for Linux (pkg rpm xbps)
Download libstdc++.so.6 packages for AlmaLinux, Amazon Linux, CentOS, Fedora, FreeBSD, Mageia, OpenMandriva, openSUSE, PCLinuxOS, Rocky Linux, Void Linux
🌐
Pkgs.org
pkgs.org › download › libstdc++.so.6()(64bit)
Libstdc++.so.6()(64bit) Download (RPM)
Download libstdc++.so.6()(64bit) linux packages for AlmaLinux, ALT Linux, Amazon Linux, CentOS, Fedora, Mageia, OpenMandriva, openSUSE, PCLinuxOS, Rocky Linux
Find elsewhere
🌐
LinuxQuestions.org
linuxquestions.org › questions › centos-111 › centos-7-4-requires-libstdc-so-6-glibcxx_3-4-20-64bit-4175616769-print
LinuxQuestions.org - Centos 7.4 Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
LinuxQuestions.org (/questions/) · - CentOS (https://www.linuxquestions.org/questions/centos-111/) · - - Centos 7.4 Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) (https://www.linuxquestions.org/questions/centos-111/centos-7-4-requires-libstdc-so-6-glibcxx_3-4-20-64bit-4175616769/)
🌐
GitHub
github.com › coder › code-server › issues › 347
Check /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20', `GLIBCXX_3.4.21' by default · Issue #347 · coder/code-server
March 27, 2019 - Description In 1.408-vsc1.32.0, it seems code-server check GLIBCXX_3.4.20 and GLIBCXX_3.4.21 before anything starts. Therefore, it's almost impossible to run code-server in CentOS 7. We can run cod...
Author   coder
🌐
GitHub
github.com › nodegit › nodegit › issues › 1765
libstdc++.so.6: version `GLIBCXX_3.4.20' not found on CentOS · Issue #1765 · nodegit/nodegit
March 19, 2020 - System information node version: 8.12.0 npm or yarn version: 6.4.1 OS/version/architecture: CentOs 7-5 Applicable nodegit version: 0.26.4 node -v npm -v # (or yarn -v) node -e "console.log(process.platform)" node -e "console.log(require(...
Author   nodegit
🌐
Media Control Panel
mediacp.net › portal › index.php › knowledgebase › 7 › CentOS-6-and-Debian---libstdcplusplus.so.6-cannot-open-shared-object-file.html
CentOS 6 & Debian - libstdc++.so.6: cannot open shared object file - Knowledgebase - MediaCP
Shoutcast Server 2 will not start on CentOS 6 or Debian. When starting shoutcast server 2 you may receive the following error: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
🌐
GitHub
github.com › rongfengliang › libstdc-so
GitHub - rongfengliang/libstdc-so: libstdc++.so some library for glibc · GitHub
rm -rf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.26 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Starred by 27 users
Forked by 15 users
🌐
GitHub
github.com › displaylink-rpm › displaylink-rpm › issues › 13
RHEL7/Centos 7 support · Issue #13 · displaylink-rpm/displaylink-rpm
February 1, 2017 - $ sudo rpm -i centos-7-displaylink-1.2.64-1.x86_64.rpm [sudo] password for xxx: error: Failed dependencies: libstdc++.so.6(CXXABI_1.3.8)(64bit) is needed by displaylink-1.2.64-1.x86_64 libstdc++.so.6(GLIBCXX_3.4.20)(64bit) is needed by displaylink-1.2.64-1.x86_64 libstdc++.so.6(GLIBCXX_3.4.21)(64bit) is needed by displaylink-1.2.64-1.x86_64
Author   displaylink-rpm
Top answer
1 of 3
6

Commentary on YUM & deps

YUM does do this. But it's only as good as the RPM specifies. In this case your RPM states that it'll work with any GLIBC > 2.13 but it clearly was built with a specific version of GLIBC, and will only work if the appropriate GCC symbols are available on the system:

$ rpm -qpR trillian-6.1.0.5-1.fc25.x86_64.rpm
atkmm >= 2.22.0
cairo >= 1.12.0
cairomm >= 1.10.0
gdk-pixbuf2 >= 2.26.0
glib2 >= 2.30.0
glibc >= 2.13
glibmm24 >= 2.32.0
gtk3 >= 3.4.0
gtkmm30 >= 3.4.0
libX11 >= 1.5.0
libXScrnSaver >= 1.2.0
libnotify >= 0.7.5
librsvg2-tools >= 2.36.0
libsigc++20 >= 2.2.10
libzip >= 0.10.0
openssl-libs >= 1:1.0.1
pango >= 1.30.0
pangomm >= 2.28.0
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
zlib >= 1.2.0

You can use rpm -qpR <rpm> to determine what dependencies it requires.

More on your issue

The heart of your issue is you're attempting to use a package that was built using a different version of the GCC compiler vs. what run time libraries are actually available on your OS.

In your case you're on CentOS 7.x and you really cannot mix RPMs across Fedora & CentOS like this, or at least you shouldn't.

If you look at what package owns that shared library:

$ rpm -qf /lib64/libstdc++.so.6
libstdc++-4.8.5-28.el7_5.1.x86_64

You can also investigate the shared library itself to see what GCC symbols it supports:

$ nm -D /lib64/libstdc++.so.6 | grep -i GLIBC | head -5
0000000000000000 A GLIBCXX_3.4
0000000000000000 A GLIBCXX_3.4.1
0000000000000000 A GLIBCXX_3.4.10
0000000000000000 A GLIBCXX_3.4.11
0000000000000000 A GLIBCXX_3.4.12

And finally look to see if it includes the ones that this RPM's binaries is looking for:

$ nm -D /lib64/libstdc++.so.6 | grep -iE '3\.4\.20|3\.4\.21'
$

No surprises here, this .so library doesn't include the symbols for either of those versions of GCC, hence the error.

What to do?

The typical ways you deal with this are either:

  1. Get a binary built against your GCC's symbol definitions
  2. Get just the libstdc++.so.6 library from some other tool (many apps opt to include libraries for easier deployment/setup/installation) and point to it via your LD_LIBRARY_PATH. You typically do it like this:

    $ LD_LIBRARY_PATH=/path/to/lib trillian
    
  3. Run the app in a VM

  4. Run the app in a Docker container
  5. Get a version of the RPM that has binaries that were built using symbols that are consistent with your OS's GCC setup.

Given the similarities between Fedora & CentOS I've had good success with many of the above. You could try #5, and try one of the older Fedora RPMs on their website to see if it was built with CentOS's version of GCC symbols.

References

  • https://en.wikipedia.org/wiki/GNU_C_Library
  • How To Write Shared Libraries
  • Static, Shared Dynamic and Loadable Linux Libraries
2 of 3
3

yum resolves dependencies concerning other packages. In other words, it installs packages which are depended on by the package(s) that you are trying to install.

The error that you are receiving is due to the fact that the library file, /lib64/libstdc++.so.6, does not include GLIBCXX_3.4.20 or GLIBCXX_3.4.21. Usually, /usr/lib64/libstdc++.so.6 is a symlink to /usr/lib64/libstdc++.so.6.0.# where # is the highest version of GLIBCXX inside.

If you run this command, you'll see the versions of GLIBCXX which are included:

strings /usr/lib64/libstdc++.so.6 | grep -i ^glibcxx_

As you don't have it, you will need to install a package which contains those libraries.

The easiest package to install that provides it is:

Anaconda3

You can download it from Anaconda's website and there is a walkthrough on installing it. After it's installed, you can prepend Anaconda's library to your LD_LIBRARY_PATH. For example, if you installed it into /opt/anaconda3, then you'll add this line to your ~/.bash_profile or ~/.bashrc:

export LD_LIBRARY_PATH=/opt/anaconda3/lib:$LD_LIBRARY_PATH

You can then start a new shell session and run trillian again.

You can also source compile GCC6, GCC7, or GCC8 which will provide the correct libraries which you can then add to your path but you also have to source compile GMP, MPC, and MPFR which, in your case, is more trouble than it's worth.

🌐
Stack Overflow
stackoverflow.com › questions › 50647537 › using-old-libstdc-so-5-and-libstdc-so-6-both-in-a-single-linux-application
c++ - using (old) libstdc++.so.5 and libstdc++.so.6 both in a single Linux application - Stack Overflow
We have a given set of legacy C++ ... old OS using the compatibility library libstdc++.so.5.0.7, while the current C++ version with a different library ABI is libstdc++.so.6....
🌐
GitHub
github.com › keepassxreboot › keepassxc › issues › 3728
RHEL 7.7 - /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' on version 2.5.0 · Issue #3728 · keepassxreboot/keepassxc
October 30, 2019 - $ ./KeePassXC-x86_64.AppImage ... /lib64/libstdc++.so.6: version CXXABI_1.3.8' not found (required by /tmp/.mount_KeePasuJydgm/usr/lib/libicuuc.so.55) Were your build systems upgraded to a version that doesn't provide backward compatibility as far as RHEL7? Install RHEL7/Centos7 (currently ...
Author   keepassxreboot