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]