/Usr/Lib/Libstdc++.So.6: Version 'Glibcxx_3.4.15' Not Found

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found

It seems that your libstdc++.so.6 is too old for your program, You can try to update you libstdc++.so. In my centos7, my libstdc++.so.6 is linked to libstdc++.so.6.0.19

libstdc++.so.6 -> libstdc++.so.6.0.19

There are the strings in it

[root]#strings libstdc++.so.6|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
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

Maybe you could download a newer version and relink the libstdc++.so.6, but you should care about are other programs in you system still work well.

Update this lib you should vary careful, It may take new problems, I had replaced the libc.so.6, then all commands can't work, I used /sbin/sln fix it. See glibc: elf file OS ABI invalid


Download libstdc++ from pkgs.org, then unpack it.

rpm2cpio libstdc++-4.9.2-1.fc21.x86_64.rpm |cpio -idmv
cp ./usr/lib64/libstdc++.so.6.0.20 /usr/lib64

Maybe you can use LD_PRELOAD=/usr/lib64/libstdc++.so.6.0.20 before you execute your program. Like this

LD_PRELOAD=/usr/lib64/libstdc++.so.6.0.20 ls -hl

Or export LD_LIBRARY_PATH=/usr/lib64/libstdc++.so.6.0.20, but I'm not certain it will work.

If you relink the libstdc++.so.6, be careful.

`GLIBCXX_3.4.15' not found but it is there

LD_LIBRARY_PATH should point to a path, not a library.

This should work for you:

LD_LIBRARY_PATH=/opt/google/chrome/lib:$LD_LIBRARY_PATH ./myFile.out -h

Alternatively,

export LD_LIBRARY_PATH=/opt/google/chrome/lib:$LD_LIBRARY_PATH
./myFile.out -h

Note this does not involve any symlinking nor replacing system libraries.

Since libstdc++ (and glibc as well) are forward compatible, it is best to compile/link against the oldest version you want to support (if of course you are in control of myFile.out).

It is definitely better to look for a proper CentOS6 package of that version of libstdc++ you need. But even then you'll need to point your loader to it, as it will not replace the system /usr/lib64/libstdc++.so.6, rather live alongside it.
You don't provide much context so I'm not sure what exactly you're trying to accomplish with what exactly.

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found

I'm compiling gcc 4.6 from source, and apparently

sudo make install 

didn't catch this one. I dug around and found

gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15

I copied it in to /usr/lib and redirected libstdc++.so.6 to point to the new one, and now everything works.

libstdc++.so.6: version `GLIBCXX_3.4.20' not found

Considering that /usr/lib/x86_64-linux-gnu/libproxy.so.1 is supplied by Ubuntu, let's assume that it is compatible with the system libstdc++ library. This means that the application is not actually using that system library, but some other version. I'd suggest to check if the application sets LD_LIBRARY_PATH and if there is another copy of libstdc++.so.6 on that path. In this case, try moving it away or deleting it—the application should then switch to the system library, which is newer and should be backwards-compatible.

nodejs cookbook: node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by node)

This is not an error in the cookbook. This looks like this bug in node.

make install' compains libstdc++.so.6 not having GLIBCXX_3.4.15 but I have libstdc++.so.6 file in the LD_LIBRARY_PATH

But I have /usr/local/lib64 before /usr/lib64 in $LD_LIBRARY_PATH

When you run under sudo, GLIBC will ignore LD_LIBRARY_PATH and only use system paths to search for libraries.

If GLIBC didn't do that, you could trivially compromise any setuid program by pointing LD_LIBRARY_PATH to your own libc.so.6.

Solutions:

  1. Better: don't use LD_LIBRARY_PATH. Instead compile your programs with appropriate -rpath= linker option, so they just work.

  2. Worse: sudo -s.
    Now set LD_LIBRARY_PATH any way you want, then run make install.



Related Topics



Leave a reply



Submit