thanks for the detailed input :-). It looks as though it is not a dynamically loaded memory address resolution issue at al, but simply a question of build flags. That should hopefully make it easy to get you going. The simple answer is that for the CC flags you will need to add -g and not just -debug.
Let me however elaborate on the flags you are using a bit more.
Removing -ipo is not necessary, but because -ipo triggers heavy inlining it may be a good idea to remove it to make debugging easier.
There also is no real need to force -O0 or -Od. Setting -g by defualt will switch the compiler to use -O0 unless -O2 or -O3 are explicitly specified.Having alloptimizations turned off as you do mayhoweverbe beneficial for debugging as well. It may however also potentially impact runtime behavior and thus depending on the bug you would like to find this may not be what you intend.
Let me now talk about the debug flags.
The main compiler flag enabling Dwarf 2/3 symbol info generation in compatibility with GNU is -g. You can specificy "-debug all" in addition to ensure optimal symbol info coverage.
If you had an explixit link step you would also want to add -debug to the LD flags. Since it looks as though you are using ICC as the linker driver this is however not necessary.
Finally I would like to add a few comments on optimization flags.
Using -no-prec-div is indeed a good idea when targeting the Intel Atom processor. an dmay give you a little bit of additional performance. To take advantage of thein-oder instruction scheduler optimiations as well as various heuristics and Intel Atom processor specific instrucisons I would recommend using -xSSE3_ATOM instead of just -xSSE3. I would also recommend using either -x