-g
Produce debugging information in the operating system's native format (stabs, COFF, XCOFF, or DWARF 2). GDB can work with this debugging information.
On most systems that use stabs format, -g enables use of extra debugging information that only GDB can use; this extra information makes debugging work better in GDB but probably makes other debuggers crash or refuse to read the program. If you want to control for certain whether to generate the extra information, use -gstabs+, -gstabs, -gxcoff+, -gxcoff, or -gvms (see below).
GCC allows you to use -g with -O. The shortcuts taken by optimized code may occasionally produce surprising results: some variables you declared may not exist at all; flow of control may briefly move where you did not expect it; some statements may not be executed because they compute constant results or their values are already at hand; some statements may execute in different places because they have been moved out of loops.
Nevertheless it proves possible to debug optimized output. This makes it reasonable to use the optimizer for programs that might have bugs.
The following options are useful when GCC is generated with the capability for more than one debugging format.

Actually we are running gcc with the simple -O optimization and -g (should be equivalent to "debug" VS mode), and that should be -02 -s -DNDEBUG for an equivalent of "Release" VS optimization.
(see the 2nd answer)

edit4:
i've tried to compile on linux vg_world with the optimized (-02 -s -DNDEBUG) options. I have no problem.

Of course, if we remove all debug info from the compiler, we will have an optimized and light binary, but we have no more debug.
An intermediate case should be : -02 -ggdb
so you have some optimizations and gdb debug (with all symbols)

Perfect answer, Black. Thank you for looking at that. I was mostly curious if we needed to maintain a 2nd makefile for "optimized" mode; it would be important to see our performance as we go because I never trust Debug to be a good measure.

I will look into the Release (non-debug) of VS2012 as well. I think it's time to come out of hiding.

on Linux the make file can be modified to use : "make debug" like you use "make clean", so in place of "release" vars the process will use the "debug" vars.
So we will have only one make file to manage ^^ i can make these modifications if wanted.