1 |
On 2009-09-28, walt <w41ter@×××××.com> wrote: |
2 |
> On 09/27/2009 09:38 PM, Grant Edwards wrote: |
3 |
>> I tried doing an upgrade (the usual emerge -auvND world), and |
4 |
>> it choked on glibmm 2.20.1. The compile failed the basic error |
5 |
>> seems to be this: |
6 |
>> |
7 |
>> generate_defs_glib.o: In function `main': |
8 |
>> 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)' |
9 |
|
10 |
[...] |
11 |
|
12 |
> Those undefined references are supplied by libstdc++, so it |
13 |
> looks like you have a classic case of duelling library |
14 |
> versions. |
15 |
> |
16 |
> The error messages mention gcc-3.4.6, which is actually quite |
17 |
> old now, so perhaps you've switched to gcc-4.x.x now? |
18 |
|
19 |
Yes! I suspected that was the issue, but I had missed noticing |
20 |
the 3.4.6 in some of the libstdc++ paths. |
21 |
|
22 |
> The fix is to go back and re-emerge all packages that linked |
23 |
> against the old libstdc++. |
24 |
|
25 |
Thanks. I figured it was something like that. |
26 |
|
27 |
> One way to find them is to run fix_libtool_files.sh and note |
28 |
> which ones get fixed. You still need to re-emerge those |
29 |
> packages, though, if you're now using gcc-4.x |
30 |
|
31 |
Yes, I'm now using gcc 4. |
32 |
|
33 |
> I would actually just grep through all the .la files for |
34 |
> "3.4.6" (assuming that's your *old* version of gcc) and |
35 |
> re-emerge the packages that own those files. Maybe someone |
36 |
> else knows an easier way. |
37 |
|
38 |
I'll try fix_libtool_files.sh first, then go from there. |
39 |
|
40 |
-- |
41 |
Grant |