What is the different between .a .o .out files?