Though all statements are not fully correct from a Computer Engineer point of view, here the answer should be A. A compiler converts the whole source code to object code where as an interpreter does this line by line.
Only meant for CS people.
B - An object code produced by a compiler is permanently saved for future - object code is stored as a file -- but what happens if the hard drive crashes -- so permanent is not technically correct.
C - It reports all errors in a program with line numbers - Not necessary. A compiler can stop on the first error.
D - Usually true-- but depends on the compilation flag and optimizations.