GCC by itself attempts to be a conforming freestanding implementation.
See Language Standards Supported by GCC, for details of
what this means. Beyond the library facilities required of such an
implementation, the rest of the C library is supplied by the vendor of
the operating system. If that C library doesn't conform to the C
standards, then your programs might get warnings (especially when using
-Wall) that you don't expect.
For example, the
sprintf function on SunOS 4.1.3 returns
char * while the C standard says that
sprintf returns an
fixincludes program could make the prototype for
this function match the Standard, but that would be wrong, since the
function will still return
If you need a Standard compliant library, then you need to find one, as
GCC does not provide one. The GNU C library (called
provides ISO C, POSIX, BSD, SystemV and X/Open compatibility for
GNU/Linux and HURD-based GNU systems; no recent version of it supports
other systems, though some very old versions did. Version 2.2 of the
GNU C library includes nearly complete C99 support. You could also ask
your operating system vendor if newer libraries are available.