Depends on target. Some targets (like many *nix) can generate binary .o files for the target, but call the linker to generate the final binary.
Windows (32/64-bit) additionally has an internal linker, and directly generates .o and .exe
More minor targets might generate assembler to be assembled by the system assembler.
It is possible to generate assembler on targets that generate .o directly, sometimes for different assemblers (e..g GAS AT&T syntax or MASM style intel syntax)