0

I have come across the somewhat common "GLIBXX_3.4.15 not found" error. In my case though I'm seeing something really weird.

Usually the error appears something like this:

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

Mine looks like this though:

/opt/smrtanalysis/current/analysis/lib/libstdc++.so.6: version 'GLIBCXX_3.4.15' not found

A lot of the solutions (here, here, or here) suggest to try something like apt-get -f install to correct it (or reinstalling via apt-get), but I'm getting that error when I try to run apt.

I've added /usr/lib, /usr/local/lib, /usr/lib/x86_64-linux-gnu, and /usr/lib/i386-linux-gnu to my LD_LIBRARY_PATH and still no go.

Eventually, I found a suggestion to try using dpkg --remove libstdc++6 and install it manually, which gave me this error:

dpkg: dependency problems prevent removal of libstdc++6:
...
insert long list of programs that depend on libstdc++6
...
dpkg: error processing libstdc++6 (--remove):
 dependency problems - not removing
Errors were encountered while processing:
 libstdc++6

So I tried to reinstall from the .deb, thinking maybe it would rework the pathing issue, and I got:

Preparing to replace libstdc++6 4.6.3-1ubuntu5 (using libstdc++6_4.6.3-1ubuntu5_amd64.deb) ...
Unpacking replacement libstdc++6 ...
dpkg: error processing libstdc++6 (--install):
 libstdc++6:amd64 4.6.3-1ubuntu5 cannot be configured because libstdc++6:i386 is in a different version (4.8.1-2ubuntu1~12.04)
Errors were encountered while processing:
 libstdc++6

So I gave up on that idea, instead I used locate libstdc++.so to make a new link to /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16 and copied it into /opt/smrtanalysis/current/analysis/lib/ to replace the incorrect libstdc++.so.6 link (saving the old one, jsut in case). Now apt-get -f install tells me:

The following extra packages will be installed:
  libstdc++6
The following packages will be upgraded:
  libstdc++6
1 upgraded, 0 newly installed, 0 to remove and 111 not upgraded.
2 not fully installed or removed.
Need to get 0 B/326 kB of archives.
After this operation, 21.5 kB of additional disk space will be used.
Do you want to continue [Y/n]?

Which seemed like progress, but saying y gave the following:

/usr/bin/perl: symbol lookup error: /opt/smrtanalysis/current/miscdeps/basesys/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/auto/IO/IO.so: undefined symbol: Perl_Tstack_sp_ptr
(Reading database ... 210954 files and directories currently installed.)
Preparing to replace libstdc++6 4.6.3-1ubuntu5 (using .../libstdc++6_4.8.1-2ubuntu1~12.04_amd64.deb) ...
Unpacking replacement libstdc++6 ...
dpkg: error processing /var/cache/apt/archives/libstdc++6_4.8.1-2ubuntu1~12.04_amd64.deb (--unpack):
 './usr/share/doc/libstdc++6' is different from the same file on the system
Errors were encountered while processing:
 /var/cache/apt/archives/libstdc++6_4.8.1-2ubuntu1~12.04_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

I have no idea what smrtanalysis did when it installed to muck with the pathing so much, nor how to make apt look at usr/libs. Suggestions?

EDIT

Tracing back dependencies showed me the following:

ldd /usr/bin/apt-get
    linux-vdso.so.1 =>  (0x00007fff65c38000)
    libapt-pkg.so.4.12 => /usr/lib/x86_64-linux-gnu/libapt-pkg.so.4.12 (0x00007fce5b5a6000)
    libstdc++.so.6 => /opt/smrtanalysis/current/analysis/lib/libstdc++.so.6 (0x00007fce5b2a2000)
    libgcc_s.so.1 => /opt/smrtanalysis/current/analysis/lib/libgcc_s.so.1 (0x00007fce5b08c000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fce5acae000)
    libutil.so.1 => /opt/smrtanalysis/current/misclibs/sys-root/lib/libutil.so.1 (0x00007fce5aaab000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fce5a8a7000)
    libz.so.1 => /opt/smrtanalysis/current/common/lib/libz.so.1 (0x00007fce5a688000)
    libm.so.6 => /opt/smrtanalysis/current/misclibs/sys-root/lib/libm.so.6 (0x00007fce5a405000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fce5b8d1000)

and for PERL

 ldd /usr/bin/perl
    linux-vdso.so.1 =>  (0x00007fff707ff000)
    libperl.so.5.14 => /usr/lib/libperl.so.5.14 (0x00007fbc3b501000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbc3b142000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbc3af3e000)
    libm.so.6 => /opt/smrtanalysis/current/misclibs/sys-root/lib/libm.so.6 (0x00007fbc3acba000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbc3aa9d000)
    libcrypt.so.1 => /opt/smrtanalysis/current/misclibs/sys-root/lib/libcrypt.so.1 (0x00007fbc3a865000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fbc3b89f000)

Any ideas on how to undo the dependency changes?

Pallieguy
  • 35
  • 7
  • which version of Ubuntu you are using, I mean 64 bit or 32 bit. because your system has libstdc++6:i386 which is 32 bit version and you are installing a .deb libstdc++6_4.6.3-1ubuntu5_amd64.deb which is 64 version. libstdc++6:amd64 4.6.3-1ubuntu5 cannot be configured because libstdc++6:i386 is in a different version (4.8.1-2ubuntu1~12.04) – g_p Sep 26 '14 at 15:54
  • uname -a says Linux banting 3.5.0-54-generic #81~precise1-Ubuntu SMP Tue Jul 15 04:02:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

    I have some programs that don't have 64 bit versions and thus had to install 32bit dependencies, though didn't keep track of which.

    – Pallieguy Sep 26 '14 at 16:07

1 Answers1

1

I ended up digging through /etc/bash.bashrc and commented out any entries with the /opt/smrtanalysis/... and everything is working again.

Pallieguy
  • 35
  • 7