c++ -mcpu=k6 -march=k6 -pipe -pipe -o .libs/avibench benchmark.o -Wl,-rpath -Wl,/usr/lib ../../lib/.libs/libaviplay.so -L/usr/lib -L/usr/kde/3/lib -L/usr/X11R6/lib /usr/kde/3/lib/libartsc.so /usr/lib/libSDL.so -lartsc /usr/lib/libesd.so /usr/lib/libaudiofile.so -lm /usr/lib/libasound.so -lvga -lpthread -lSM -lICE -lXxf86dga -lXxf86vm -lXi -lXft -lXv -lXext -lX11 -lnsl -ldl -Wl,--r path -Wl,/usr/kde/3/lib benchmark.o: In function `help(void)': benchmark.o(.text+0xf): undefined reference to `cout' benchmark.o(.text+0x14): undefined reference to `ostream::operator<<(char const *)' benchmark.o: In function `main': benchmark.o(.text+0x46): undefined reference to `endl(ostream &)' benchmark.o(.text+0x76): undefined reference to `cout' benchmark.o(.text+0x7b): undefined reference to `ostream::operator<<(char const *)' benchmark.o(.text+0x86): undefined reference to `ostream::operator<<(int)' benchmark.o(.text+0x91): undefined reference to `ostream::operator<<(char const *)' benchmark.o(.text+0x9c): undefined reference to `ostream::operator<<(int)' benchmark.o(.text+0xa7): undefined reference to `ostream::operator<<(char const *)' benchmark.o(.text+0xb2): undefined reference to `ostream::operator<<(ostream &(*)(ostream &))' benchmark.o(.text+0x577): undefined reference to `endl(ostream &)' benchmark.o(.text+0x58b): undefined reference to `cout' benchmark.o(.text+0x590): undefined reference to `ostream::operator<<(char const *)' benchmark.o(.text+0x59b): undefined reference to `ostream::operator<<(char const *)' benchmark.o(.text+0x5a6): undefined reference to `ostream::operator<<(ostream &(*)(ostream &))' benchmark.o(.text+0xf03): undefined reference to `endl(ostream &)' benchmark.o(.text+0xf1a): undefined reference to `cout' benchmark.o(.text+0xf1f): undefined reference to `ostream::operator<<(char const *)' benchmark.o(.text+0xf2a): undefined reference to `ostream::operator<<(int)' benchmark.o(.text+0xf35): undefined reference to `ostream::operator<<(ostream &(*)(ostream &))' benchmark.o(.text+0x16cb): undefined reference to `endl(ostream &)' benchmark.o(.text+0x16d8): undefined reference to `cout' benchmark.o(.text+0x16dd): undefined reference to `ostream::operator<<(char const *)' benchmark.o(.text+0x16e8): undefined reference to `ostream::operator<<(ostream &(*)(ostream &))' collect2: ld returned 1 exit status make[2]: *** [avibench] Error 1 make[2]: Leaving directory `/var/tmp/portage/avifile-0.7.7.20020523/work/avifile0.7-0.7.7/samples/misc'
gcc-3.1?
# g++ -v Reading specs from /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.3/specs gcc version 2.95.3 20010315 (release) # gcc -v Reading specs from /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.3/specs gcc version 2.95.3 20010315 (release) Both binaries are dated yesterday, July 4, since I just updated world. However, I should mention that this machine *was* gcc3.1 for a while before I converted back to 2.95 again, so I'm suspicious that there may still be something peculiar to this machine because of that. I recompiled everything after converting back many weeks ago and this is the only compilation error I've seen since then. Just to be sure: # cc -v Reading specs from /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.3/specs gcc version 2.95.3 20010315 (release) # c++ -v Reading specs from /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.3/specs gcc version 2.95.3 20010315 (release) This is the only package that won't compile, so the problem has to be subtle.
Ha! I didn't realize that I couldn't just re-emerge gcc-2.95 and rebuild everything. I didn't specificially unmerge gcc-3.1 and it turns out that leaving those files around must have fooled autoconf into mis-configuring avifile for g++3.1 (or something). When I did an 'unmerge' of gcc-3.1 the problem went away. Interesting that 'emerge clean' did not pick up the multiple versions of gcc and offer to unmerge one or more.