Compile flags for API:

       -fomit-frame-pointer
              Don't keep the frame  pointer  in  a  register  for
              functions that don't need one.

       -mcpu='i686'
           Tune to 'i686' everything applicable about the generated code,
           except for the ABI and the set of available instructions.

       -march=i686
           Generate instructions for the machine type 'i686'.

	-O2
	   Optimize even more.  GCC performs nearly all supported optimiza-
           tions that do not involve a space�speed tradeoff.  The compiler
           does not perform loop unrolling or function inlining when you spec-
           ify -O2.  As compared to �O, this option increases both compilation
           time and the performance of the generated code.

           -O2 turns on all optional optimizations except for loop unrolling,
           function inlining, and register renaming.  It also turns on the
           �fforce�mem option on all machines and frame pointer elimination on
           machines where doing so does not interfere with debugging.

       -Wall
           This enables all the warnings about constructions that some users
	   consider questionable, and that are easy to avoid (or modify to
	   prevent the warning), even in conjunction with macros.

       -fPIC
           If supported for the target machine, emit position�independent
           code, suitable for dynamic linking and avoiding any limit on the
           size of the global offset table.

           Position-independent code requires special support, and therefore
           works only on certain machines.

	-shared
           Produce a shared object which can then be linked with other objects
           to form an executable.  Not all systems support this option.  For
           predictable results, you must also specify the same set of options
           that were used to generate code (-fpic, -fPIC, or model suboptions)
           when you specify this option.[1]