On 2009-09-28, walt <w41...@gmail.com> wrote:
> On 09/27/2009 09:38 PM, Grant Edwards wrote:
>> I tried doing an upgrade (the usual emerge -auvND world), and
>> it choked on glibmm 2.20.1.  The compile failed the basic error
>> seems to be this:
>>
>>    generate_defs_glib.o: In function `main':
>>    generate_defs_glib.cc:(.text+0x6b): undefined reference to 
>> `std::basic_ostream<char, std::char_traits<char>  >&  
>> std::__ostream_insert<char, std::char_traits<char>  
>> >(std::basic_ostream<char, std::char_traits<char>  >&, char const*, int)'

[...]

> Those undefined references are supplied by libstdc++, so it
> looks like you have a classic case of duelling library
> versions.
>
> The error messages mention gcc-3.4.6, which is actually quite
> old now, so perhaps you've switched to gcc-4.x.x now?

Yes!  I suspected that was the issue, but I had missed noticing
the 3.4.6 in some of the libstdc++ paths.

> The fix is to go back and re-emerge all packages that linked
> against the old libstdc++.

Thanks.  I figured it was something like that.

> One way to find them is to run fix_libtool_files.sh and note
> which ones get fixed.  You still need to re-emerge those
> packages, though, if you're now using gcc-4.x

Yes, I'm now using gcc 4.

> I would actually just grep through all the .la files for
> "3.4.6" (assuming that's your *old* version of gcc) and
> re-emerge the packages that own those files.  Maybe someone
> else knows an easier way.

I'll try fix_libtool_files.sh first, then go from there.

-- 
Grant



Reply via email to