g++42 -v Using built-in specs. Target: x86_64-portbld-freebsd6.2 Configured with: ./..//gcc-4.2-20070102/configure --disable-nls --with-system-zlib --with-libiconv-prefix=/usr/local --with-gmp=/usr/local --program-suffix=42 --libdir=/usr/local/lib/gcc-4.2.0 --with-gxx-include-dir=/usr/local/lib/gcc-4.2.0/include/c++/ --infodir=/usr/local/info/gcc42 --disable-libgcj --prefix=/usr/local x86_64-portbld-freebsd6.2 Thread model: posix gcc version 4.2.0 20070102 (prerelease) g++42 -O -fno-strict-aliasing -pipe -o gendoc gendoc.cc % ./gendoc /libexec/ld-elf.so.1: ./gendoc: Undefined symbol "_ZNSo9_M_insertEPKcl" % g++42 -fno-strict-aliasing -pipe -o gendoc gendoc.cc % ./gendoc ...works
Created attachment 12878 [details] a testcase actually used file. from octave-2.9.9
% ./gendoc /libexec/ld-elf.so.1: ./gendoc: Undefined symbol "_ZNSo9_M_insertEPKcl" This makes it sound like libstdc++'s ABI has changed slightly but just in a forwards compatiable way. Can you try to force using 4.2's libstdc++?
Sorry for long delay... No, I'm using 4.2's libstdc++. % g++42 -O -fno-strict-aliasing -pipe -o gendoc gendoc.cc ; ldd ./gendoc ./gendoc: libstdc++.so.6 => /usr/local/lib/gcc-4.1.2/libstdc++.so.6 (0x8006a3000) libm.so.4 => /lib/libm.so.4 (0x80089d000) libgcc_s.so.1 => /usr/local/lib/gcc-4.1.2/libgcc_s.so.1 (0x8009b9000) libc.so.6 => /lib/libc.so.6 (0x800ac5000) % g++42 -pipe -o gendoc gendoc.cc ; ldd ./gendoc ./gendoc: libstdc++.so.6 => /usr/local/lib/gcc-4.1.2/libstdc++.so.6 (0x8006a1000) libm.so.4 => /lib/libm.so.4 (0x80089b000) libgcc_s.so.1 => /usr/local/lib/gcc-4.1.2/libgcc_s.so.1 (0x8009b7000) libc.so.6 => /lib/libc.so.6 (0x800ac3000)
it seems amd64 only. with i386-portbld-freebsd6.2, % g++42 -v Using built-in specs. Target: i386-portbld-freebsd6.2 Configured with: ./..//gcc-4.2-20070110/configure --disable-nls --with-system-zlib --with-libiconv-prefix=/usr/local --with-gmp=/usr/local --program-suffix=42 --libdir=/usr/local/lib/gcc-4.2.0 --with-gxx-include-dir=/usr/local/lib/gcc-4.2.0/include/c++/ --infodir=/usr/local/info/gcc42 --disable-rpath --prefix=/usr/local i386-portbld-freebsd6.2 Thread model: posix gcc version 4.2.0 20070110 (prerelease) % g++42 -O -fno-strict-aliasing -pipe -o gendoc gendoc.cc ; ldd ./gendoc ./gendoc: libstdc++.so.6 => /usr/local/lib/gcc-4.2.0/libstdc++.so.6 (0x280ed000) libm.so.4 => /lib/libm.so.4 (0x281ca000) libgcc_s.so.1 => /usr/local/lib/gcc-4.2.0/libgcc_s.so.1 (0x281e0000) libc.so.6 => /lib/libc.so.6 (0x281ea000) % ./gendoc ... works. % g++42 -pipe -o gendoc gendoc.cc ; ldd ./gendoc ./gendoc: libstdc++.so.6 => /usr/local/lib/gcc-4.2.0/libstdc++.so.6 (0x280ef000) libm.so.4 => /lib/libm.so.4 (0x281cc000) libgcc_s.so.1 => /usr/local/lib/gcc-4.2.0/libgcc_s.so.1 (0x281e2000) libc.so.6 => /lib/libc.so.6 (0x281ec000) % ./gendoc ... works. it seems it DOES only happens to amd64...
Andrew Pinski: It seems ldconfig doesn't detect 4.2 libstdc++. I removed gcc-4.1 and gcc-4.2 compiled executable now find correct version of libstdc++... marked as worksforme. thanks for your attention.