1 |
On 09/27/2009 09:38 PM, Grant Edwards wrote: |
2 |
> I tried doing an upgrade (the usual emerge -auvND world), and |
3 |
> it choked on glibmm 2.20.1. The compile failed the basic error |
4 |
> seems to be this: |
5 |
> |
6 |
> generate_defs_glib.o: In function `main': |
7 |
> 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)' |
8 |
> |
9 |
> I've done a revdep-rebuild to make sure things are consistent, |
10 |
> and it says things are OK. Google doesn't seem to know that |
11 |
> error message, and I couldn't find anything relevent at |
12 |
> bugs.gentoo.org. |
13 |
> |
14 |
> The only thing I can think of is that it has to do with some |
15 |
> libraries having been compiled with an older version of gcc, |
16 |
> but I'm not sure how to check for that... |
17 |
|
18 |
Those undefined references are supplied by libstdc++, so it looks like |
19 |
you have a classic case of duelling library versions. |
20 |
|
21 |
The error messages mention gcc-3.4.6, which is actually quite old now, |
22 |
so perhaps you've switched to gcc-4.x.x now? |
23 |
|
24 |
The fix is to go back and re-emerge all packages that linked against the |
25 |
old libstdc++. One way to find them is to run fix_libtool_files.sh and |
26 |
note which ones get fixed. You still need to re-emerge those packages, |
27 |
though, if you're now using gcc-4.x |
28 |
|
29 |
I would actually just grep through all the .la files for "3.4.6" (assuming |
30 |
that's your *old* version of gcc) and re-emerge the packages that own those |
31 |
files. Maybe someone else knows an easier way. |