1. Yes, -g and -O2 can co-exist. But the debug information produced by the compiler is larger for optimized code since we generate more debug information to create correspondence between source lines and the generated code which has been re-arranged by the optimizer. BTW there are special compiler options that you need to use if you want to get debug information generated for inlined subprograms (O2 enables subprogram inlining). Read all about that in the User and Reference manual, the Linux option is -inline-debug-info
2. Concerning multiple mcpcom processes, those may occur by the program that is driving the overall build of your project (for example, Visual Studio may use multiple processes to build the project, use /maxcpucount to control the number of processes, and "make" command has the option "-j n" to control the number of parallel processes. Are you using -ipo, inter procedural compilation? The compiler option to control parallel ipo jobs--which occurs during the link phase--is -ipo-jobs1.