I upgraded gcc today from gcc-4.1.1 to gcc-4.1.2. After doing this I got all sorts of crazy build errors: /usr/qt/3/lib/libqt-mt.so: undefined reference to `__cxa_guard_acquire@CXXABI_1.3' /usr/qt/3/lib/libqt-mt.so: undefined reference to `operator delete(void*)@GLIBCXX_3.4' /usr/qt/3/lib/libqt-mt.so: undefined reference to `vtable for __cxxabiv1::__si_class_type_info@CXXABI_1.3' /usr/qt/3/lib/libqt-mt.so: undefined reference to `operator delete[](void*)@GLIBCXX_3.4' /usr/qt/3/lib/libqt-mt.so: undefined reference to `operator new(unsigned long)@GLIBCXX_3.4' /usr/qt/3/lib/libqt-mt.so: undefined reference to `vtable for __cxxabiv1::__vmi_class_type_info@CXXABI_1.3' /usr/qt/3/lib/libqt-mt.so: undefined reference to `__cxa_pure_virtual@CXXABI_1.3' /usr/qt/3/lib/libqt-mt.so: undefined reference to `vtable for __cxxabiv1::__class_type_info@CXXABI_1.3' /usr/qt/3/lib/libqt-mt.so: undefined reference to `operator new[](unsigned long)@GLIBCXX_3.4' /usr/qt/3/lib/libqt-mt.so: undefined reference to `__cxa_guard_release@CXXABI_1.3' collect2: ld returned 1 exit status gmake[2]: *** [../../bin/doxywizard] Error 1 gmake[2]: Leaving directory `/var/tmp/portage/portage/app-doc/doxygen-1.5.1/work/doxygen-1.5.1/addon/doxywizard' gmake[1]: *** [all] Error 2 gmake[1]: Leaving directory `/var/tmp/portage/portage/app-doc/doxygen-1.5.1/work/doxygen-1.5.1/addon/doxywizard' make: *** [all] Error 2 After doing some checking, I found that gcc-config showed crossdev-i686-linux-gnu/gcc-4.1.1-r1 as my active compiler when it should have shown X86_64-pc-linux-gnu-4.1.2 as the compiler. This (obviously) broke things as shown above... Why would crossdev entries be considdered valid entries for gcc-config?
Portage 2.1.2.2 (default-linux/amd64/2006.1/desktop, gcc-4.1.2, glibc-2.5-r1, 2.6.20-viper4-20070226 x86_64) ================================================================= System uname: 2.6.20-viper4-20070226 x86_64 Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz Gentoo Base System release 1.13.0_alpha12 Timestamp of tree: Thu, 22 Mar 2007 16:50:01 +0000 distcc 2.18.3 x86_64-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled] ccache version 2.4 [enabled] dev-lang/python: 2.4.4 dev-python/pycrypto: 2.0.1-r5 dev-util/ccache: 2.4-r6 sys-apps/sandbox: 1.2.18.1 sys-devel/autoconf: 2.13, 2.61 sys-devel/automake: 1.4_p6, 1.7.9-r1, 1.9.6-r2, 1.10 sys-devel/binutils: 2.17.50.0.13 sys-devel/gcc-config: 1.3.15-r1 sys-devel/libtool: 1.5.23b virtual/os-headers: 2.6.20-r2 ACCEPT_KEYWORDS="amd64 ~amd64" AUTOCLEAN="yes" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=nocona -O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config" CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/texmf/web2c" CXXFLAGS="-march=nocona -O2 -pipe" DISTDIR="/var/portage/distfiles" FEATURES="autoconfig ccache distlocks parallel-fetch sandbox sfperms strict userfetch userpriv usersandbox" GENTOO_MIRRORS="http://gentoo.mirrors.pair.com http://gentoo.mirrors.tds.net/gentoo http://distfiles.gentoo.org" LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8" MAKEOPTS="-j4" PKGDIR="/var/portage/packages" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-* --prune-empty-dirs" PORTAGE_TMPDIR="/var/tmp/portage" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage /home/hydrogen/flameeyes /usr/local/custom_kernels" SYNC="rsync://192.168.0.1/gentoo-portage" USE="X alsa amd64 arts berkdb bitmap-fonts cairo cdr cli cracklib crypt cups curl dbus dri dvd dvdr eds emboss encode esd fam firefox fortran gdbm gif gpm gstreamer gtk2 hal iconv ipv6 isdnlog jpeg kde kdeenablefinal kdehiddenvisibility libg++ mad midi mikmod mp3 mpeg ncurses nls nptl nptlonly ogg opengl oss pam pcre perl png ppds pppd python qt3 quicktime readline reflection sdl session spell spl ssl tcpd truetype truetype-fonts type1-fonts unicode vorbis xcb xinerama xml xorg xv zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="nv vesa" Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS, LINGUAS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
gcc-config allows for one active version per target
How is it invalid that gcc-config starts compiling things with a version of gcc built for a different chost than what I have? It seems like a horribly dangerous idea.
Dan, your analysis of the problem is almost certainly incorrect. You need to post (attach) the full build log (not just the tail of the errors - it's difficult to tell what's going wrong if you don't include the command that failed). Do 'emerge <package> 2>&1 > log' if you don't have logging enabled. What does 'gcc -v' show?
Unfortunatly I already "solved" this by unmerging my cross-i686 toolchain and rebuilt world so I do not have the error. I'm not sure if I analyzed it wrong (it wouldn't be the first time!) but it seemed like the natural assumption as the gcc upgrade was gcc-4.1.1 to 4.1.2.. so it shouldn't have broken abi, and when I ran gcc-config after it showed cross-i686/gcc-4.1.1 as my active compiler. The only other thing I can think of that may have.. though I don't know why it would have.. broke it was while gcc was being merged to the live system I was compiling something outside of portage, would that have messed up the merge?
OK; if you no longer have the error, it's too late to analyse it now. Closing again - re-open if the problem recurs.
as i said, you can have more than 1 version of gcc active ... in fact, you can one active version per target