@@@STARTPACK(gcc;Integrated GNU Compilation System)

@@@OSR5DIST(http://www.sco.com/skunkware/osr5/devtools/gcc/)
@@@UW2DIST(http://www.sco.com/skunkware/uw7/devtools/gcc/)
@@@SOURCE(ftp://prep.ai.mit.edu/pub/gnu/)

<P>The GNU C Compiler (gcc) is an advanced optimizing compiler for C, C++
and Objective C. On OpenServer, this version of gcc can generate both
COFF and ELF binaries from within a single compiler. Use the <TT>-melf</TT>
flag to turn on ELF mode. By default, the compiler is always in COFF mode.
On UnixWare, gcc always generates ELF binaries. </P>

<P>On Skunkware 98, the "Gcc" package is an "Integrated GNU C Compilation
System" containing both the "production quality" GNU C Compiler and the
experimental EGCS GNU C Compiler from Cygnus. When installing the Gcc package
off of Skunkware 98, both of these compilers are installed
and co-exist. By default, the FSF gcc will be used.
The system wide default can be set in the file /etc/default/gcc by setting
the PREFERRED_GCC variable to either /usr/local/lib/front-fsf or
/usr/local/lib/front-egcs. An individual developer can over-ride the system
wide default by setting and exporting PREFERRED_GCC in her environment.
<P>
Skunkware 98 contains gcc version 2.7.2.3 and egcs version 1.0.2.
Many of the packages contained in Skunkware 98
were built with the GNU C Compiler.</P>

<P>For the UnixWare compiler (and the OpenServer compiler in ELF mode),
there are a few switches which developers may be interested in. All of
these switches are covered in the GCC documentation, this is just a brief
summary: </P>

<UL>
<LI><TT>-fPIC</TT> - generate position independent code. This is used when
creating shared libraries. </LI>

<LI><TT>-shared</TT> - used during linking. This will create a shared library.
For example, the command <TT>gcc -shared -o libfoo.so *.o</TT> will link
in all of the object files in the currently directory and correctly construct
a shared library called <TT>libfoo.so</TT>. When using this option, you
may want to check the man pages on <TT>ld</TT> for the usage of the <TT>-h</TT>
and <TT>-Bexport</TT> options. <I>NOTE:</I> in order to pass the <TT>-Bexport</TT>
flag to the linker, you need to invoke gcc with <TT>gcc -Wl,-Bexport</TT>.
This is because the <TT>-B</TT> flag has special significance to gcc. The
<TT>-Wl</TT> flag is used to pass arguments to the linker. Consult the
gcc documentation for further details. </LI>

<LI><TT>-m486</TT> - turn on 486 specific optimizations. This option will produce
code which can take advantage of specific 486 instructions, and which result
in a code speed increase on 486 and later processors. On original 386 processors,
there is a very negligible speed decrease. The code generated will still
function properly on the 386. </LI>
</UL>

<P>On OpenServer release 5.0.4, be careful when invoking gcc as a linker
if you use gcc specific flags. Be especially careful with mixing gcc specific
flags when using the <TT>-s</TT> option. This can cause the 5.0.4 linker
to core dump. For example, the command line <TT>gcc -m486 -fomit-frame-pointer
-Wall -s -o foo *.o</TT> is bad, whereas the command line <TT>gcc -s -o
foo *.o</TT> is good. The gcc specific flags <TT>-fomit-frame-pointer -Wall</TT>
(used only as an example here) confuse the 5.0.4 linker. </P>

<H3>Users of the old GDS (OSR5 only)</H3>

<P>For users of the GDS, <A HREF=http://www.sco.com/skunkware/gds>
as shipped on Skunkware 96</A>, or for users who have
downloaded the GDS from the SCO ftp site, life is a little different with
this release of GCC.Firstly, the <TT>-b elf</TT> flag has been replaced
with <TT>-melf</TT>. Secondly, the <TT>-K PIC</TT> option has been replaced
with the <TT>-fPIC</TT> option. This is to ensure compatibility with all
other version of the GNU C Compiler. Thirdly, no assemblers are provided,
as described below. </P>

<P>With this release of GCC, no assembler is provided, and the GDS is no
longer one large package, but rather a collection of smaller packages.
However, installing all of the tools found in this section of Skunkware
will be at least the equivalent of the GDS, if not more. For people using
SCO OpenServer release 5.0.0 or release 5.0.2 who are not licensed development
system users, you will need to install not only the linkers and libraries
package, but also the assembler from the development system package.
#if 0
For more information on how to do this, click <A HREF="osr5as.html">here</A>.
#endif
If you have the SCO OpenServer Development System package installed, you
do not need to do anything extra in order to use gcc. </P>

<P>For people running OpenServer release 5.0.4 or later, the linkers and
libraries package already contains the SCO assemblers. For licensed SCO
OpenServer Development System users, you can safely install gcc and all
of these development system utilities without impacting your existing installed
development system at all. </P>

@@@ENDPACK

