Ivan,
When building an executable there are 2 steps: Compiling the code to a machine code, and put all of this machine code together into an executable.
The Obj files are the result of the compilation process, raw machine code for each function that you have defined. In general there is no reason to use directly obj files unless you are loading the external code at runtime, resolving function addresses and calling the code in the obj; this type of dynamic loading is not very popular.
Here is a link to a document with more info.
The 'O' option instructs CVI to compile that file without debugging information; basically you will not have automatic runtime e
rror checking, and you can have breackpoints or step through the code.
I hope this helps, let me know if you have any further questions.
Regards,
Juan Carlos
N.I.