GCC C/C++ runtime library question
Ian Lance Taylor
ian@wasabisystems.com
Wed Oct 15 18:15:00 GMT 2003
"Ramadass, Ramanathan" <Ramanathan.Ramadass@spirentcom.com> writes:
> I am trying to replace the standard C and C++ libraries which comes
> with a Linux distro with our own(licensed from a 3rd party vendor). We
> will be providing the lower level layer which the C/C++ library
> uses(i.e. the system calls). What i would like to do is replace the
> standard and the runtime libraries which come with gcc with our own. I
> am a newbie in this and hence have some basic questions;
gcc proper only comes with basic runtime support routines, for things
like long long arithmetic and exception handling. On some systems gcc
also provides basic support for C++ global constructors and
destructors. It is unlikely that you want to replace this. If you
think you do, can you explain further?
For C++, gcc also comes with libstdc++-v3 which is an implementation
of the STL. You should be able to replace that directly with 3rd
party code--assuming of course that you can recompile the 3rd party
code to use the gcc mangling and ABI, or that the 3rd party code uses
the same ABI.
GNU/Linux comes with a large C library, but that is not part of gcc.
> 1. What is the exact difference between the C runtime and the C
> standard libraries i.e where does one end and the other begin;
> specifically w.r.t gcc? While i am going through a lot of text(both
> online and book form) i am not 100% clear on this.
I'm not sure precisely what you mean. gcc comes with what might be
called a C runtime. The C standard libraries are not part of gcc;
they are part of glibc.
> 2. In a gcc distribution where exactly does the compiler specific
> magic lie within the runtime libraries? I might have to modify gcc to
> use only my libraries but where and how do i begin? Currently i have
> built the 3rd party vendor's library and am linking with it but for
> some symbols i still have to go to the gcc runtimes. I am running "nm"
> and extracting the object modules using "ar" for all the unresolved
> symbols; which seems to be a roundabout way of doing things. What i
> would like is to understand the structure of how gcc interfaces with
> its runtimes. Would appreciate any and all help on this. Pointers to
> other articles/links/books will also be very welcome.
Basically, the gcc support is found in -lgcc, and the C library is
found in -lc. So if you link against your 3rd party library instead
of -lc, you will get the gcc runtime, but your 3rd party C library.
gcc normally links against -lc automatically, but you can disable this
using the -nostdlib option. See the documentation.
Ian
More information about the Gcc-help
mailing list