pan-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pan-users] Re: libstc++.so.6 missing


From: Duncan
Subject: [Pan-users] Re: libstc++.so.6 missing
Date: Tue, 26 Aug 2008 00:31:03 +0000 (UTC)
User-agent: Pan/0.133 (House of Butterflies)

Travis <address@hidden> posted
address@hidden, excerpted below, on  Mon, 25
Aug 2008 15:54:01 -0700:

>> On Mon, 25 Aug 2008 21:30:12 +0000, Beso wrote:
>>
>>> hi, i've just updated to pan 0.133 and now i get the error of missing
>>> /usr/lib/libstdc++.so.6. the problem is that this file seems to be
>>> libstdc++ 3.4. i'm on gentoo unstable. is there anyone who can help
>>> out?! maybe duncan...
>>>
>>> thanks
>>
>> Duncan is going to yell at you for sending html to the list ;o) so I'll
>> try to answer for him.
> 
> I was going to say something but thought Duncan would be all over it
> like stink on.......you know what.

Just got home from work... this all happened while I was sleeping, or at 
work, so I missed all the fun! =8^)

[reformatted for posting]

equery b -f libstdc
[ Searching for file(s) libstdc in *... ]

sys-devel/gcc-4.3.1-r1 
(/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/libstdc++.so ->
libstdc++.so.6.0.10)

sys-devel/gcc-4.3.1-r1
(/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/libstdc++.so.6 ->
libstdc++.so.6.0.10)

sys-devel/gcc-4.3.1-r1
(/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/libstdc++.so.6.0.10)

sys-devel/gcc-4.2.4
(/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.4/libstdc++.so.6 ->
libstdc++.so.6.0.9)

sys-devel/gcc-4.2.4
(/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.4/libstdc++.so.6.0.9)

sys-devel/gcc-4.2.4
(/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.4/libstdc++.so ->
libstdc++.so.6.0.9)


As the others suggested, your libstdc++ 3.4 (which is probably .so.5.*) 
is likely a gcc 3.4 compatibility library, assuming you don't have a 
gcc-3.4.x still merged.  Either that or it may be an orphaned version.  

The libstdc++.so.6.* versions are going to be part of your various 
gcc-4.x packages.  As such, they'll be in /usr/lib/gcc/* directories as 
seen above).  gcc-config will switch them in and out of view, but the 
problem is rather more complex than that.

In addition to what revdep-rebuild does for ordinary packages, for the 
libstdc++ problems, there's the fix_libtool_files.sh script.  I expect 
running this with the appropriate parameter (see below) will fix your 
problem.

The problem is this.  When you compile a c++ based library, libtool sets 
up the *.la file pointing at the currently selected gcc's libstdc++.  
Then you update gcc and the *.la files don't always get properly updated 
to point to the new libstdc++ as well as the old one, with it.  I think 
it runs the fix_libtool_files.sh script, but between gcc-config and the 
timing of gcc to the various library installs, it doesn't always properly 
update all of the *.la files.

What the script does is take the /old/ gcc version you hand it on the 
command line, searching for every occurrance of it in the *.la files, 
ensuring that they also have an entry for the current gcc's libstdc++.  
If they don't, it adds one (note that it doesn't remove the old one, 
which is fine even if that version is later unmerged, as long as it also 
points to the new one).

The point to remember is to feed the script the /old/ version, the one 
causing problems, not the current version.  Once you do that, you should 
be fine.  The error should tell you the version that wasn't found, tho 
you'll probably have to run pan from a terminal window in ordered to see 
it.

Very occasionally, the script will miss some *.la file somewhere.  It's 
possible to do a grep for the troublesome version and get a listing of 
all the *.la files containing it, and check them yourself, if necessary.

There's another, often easier but not always workable solution as well.  
In /most/ cases, not all but most, the *.la files aren't really needed at 
all and can actually be deleted rather than fooling with trying to edit 
them -- they cause more trouble than they are worth.  I don't grok the 
technical details but the exceptions tend to be stuff like plugins that 
are loaded somewhat differently from regular shared libraries.  Due to 
the way they are loaded, they /do/ often require the *.la files.

Thus, one option if you end up having to track down a problem with them 
manually is to /move/ the files in question to a different location out 
of the libsearch path (I like to use a dir named remove-<date> or 
similar), go about your business, and if something protests that it can't 
find one of those libraries or a plugin fails to work, try moving the 
associated *.la file back.  Later, as you come upon that directory again, 
you can decide if enough time has passed to safely delete it or not.

Another alternative, if you are using FEATURE=buildpkg at least, is to 
simply delete the *.la files, knowing you can always either remerge the 
binpkg or simply extract the *.la file right from the tarball, if 
necessary.  That way you don't have to worry about moving the *.las and 
deleting them later.  Since they aren't often used and you have an 
archived copy of them in the binpkg if necessary, just delete 'em.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman





reply via email to

[Prev in Thread] Current Thread [Next in Thread]