I suggest you look into the ECL source how it spawns the gcc processes,
and try to redirect gcc's output into the Lisp world.
One short term goal is to replace all calls to EXT:SYSTEM with calls to EXT:RUN-PROCESS in the compiler. This is tricky because both functions work totally different: one takes a single string, the other one needs a list of strings, each one with an argument for the compiler or linker. Splitting the list has to be done with great care because of potential spaces in arguments, etc, etc. Other than this, it would have the great benefit that we could filter out and pretty-print the C compiler error messages.