[i386] Why g++ _always_ link an executable with libm.so?

Denis Zaitsev zzz@anda.ru
Tue Jan 4 22:06:00 GMT 2005


I've found some strange behaviour of g++: if it's used to produce an
executable, i.e.:

        g++ xxx.C -o XXX

then that XXX is linked with libm.so, regardless of the fact that math
is not used in the program.  Also, libstdc++.so and libgcc_s.so are
linked too, even though they aren't needed as well.

But if g++ is used to compilation only, and the link stage is done by
gcc or ld, i.e:

        g++ -c xxx.C -o xxx.o
        gcc xxx.o -o XXX

then neither of that 3 libs are linked (of course, if they aren't
needed).

Why g++ does so?  Is it intentional?  Or how this can be solved?

GCC's in question are the current stable, 20041231 snapshot and all
the 3.x.x versions, as far as I remember.

Thanks in advance.



More information about the Gcc mailing list