So you just rename the file, right? I honestly don’t understand why this is a big deal. Though in general I have always thought it was weird that UNIX defaults to that name instead of the name of the main source file.
GCC a.out is an ELF file (except in extremely rare circumstances). "a.out" as a executable format is like ELF, but different and practically no longer used. This is a proposal to remove the latter