[gentoo-user] Re: glibmm 2.20.1 emerge fails to compile
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_ostreamchar, std::char_traitschar std::__ostream_insertchar, std::char_traitschar (std::basic_ostreamchar, std::char_traitschar , char const*, int)' I've done a revdep-rebuild to make sure things are consistent, and it says things are OK. Google doesn't seem to know that error message, and I couldn't find anything relevent at bugs.gentoo.org. The only thing I can think of is that it has to do with some libraries having been compiled with an older version of gcc, but I'm not sure how to check for that... 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? The fix is to go back and re-emerge all packages that linked against the old libstdc++. 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 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.
[gentoo-user] Re: glibmm 2.20.1 emerge fails to compile
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_ostreamchar, std::char_traitschar std::__ostream_insertchar, std::char_traitschar (std::basic_ostreamchar, std::char_traitschar , 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