It appears that the command line I use in gcc-2.9x for building s
static version of a program fails with gcc-3.0.  It also appears, from
the documentation, that there is a switch to make it work anyway.

This works with the 2.9x version.

  g++ -o bin/program o/object1.o ... -static

This fails

  g++-3.0 -o bin/program o/object1.o ... -static

because gcc-3.0 cannot find the libgcc_s.a file.

  /usr/bin/ld: cannot find -lgcc_s

Indeed, there is no such thing.  According to the man page

  g++-3.0 -o bin/program o/object1.o ... -static -shared-libgcc

ought to prevent a search for the libgcc_s.a library.  Instead, it
returns the same error.

I built gcc-3.0 from source (gcc-3.0-3.0.3ds3) to see if there was a
libgcc_s.a file.  I found none.

So.  I thought I might try to hack it

  cd /usr/lib/gcc-lib/i386-linux=3.0.3
  ln -s libgcc.a libgcc_s.a

  g++-3.0 -o bin/program o/object1.o ... -static

Voila.  The file links and runs.  There is a note in the man page
about how C++ programs need to use a shared version of libgcc.  Can
you shed some light on this?  Should I expect this program run
properly?


Reply via email to