I was compiled and installed gcc-4.2.3 on Linux 2.4, glibc 2.3.6 main configure options was: --enable-shared=libstdc++ --enable-static --disable-debug --enable-cpp --enable-languages=c,c++ --enable-threads After successfully compile and install got some problems when compiling apps using the -fstack-protector option: Linking C executable at-parser /pkg/lib/gcc/i686-pc-linux-gnu/4.2.3/../../../libssp.a(ssp.o): In function `__stack_chk_fail_local': /home/gzp/src/gcc-4.2.3/obj/i686-pc-linux-gnu/libssp/../../../libssp/ssp.c:175: multiple definition of `__stack_chk_fail_local' /pkg/lib/gcc/i686-pc-linux-gnu/4.2.3/../../../libssp_nonshared.a(libssp_nonshared_la-ssp-local.o):/home/gzp/src/gcc-4.2.3/obj/i686-pc-linux-gnu/libssp/../../../libssp/ssp-local.c:48: first defined here collect2: ld returned 1 exit status make[3]: *** [tests/at-parser] Error 1 libssp present only in static format, as libssp_nonshared.
ping, the problem still exist, due the combinations of the configure options (static vs shared)
Changing in gcc/gcc.c #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}" to #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp}" solved the problem.