Also in this case while there are some compiler differences between platforms for C/C++ they are well documented and known. If you stay in the middle of the language and don't try to use fringe features of the language or a specific compiler then you won't have any issues. People that complain about portability or GCC etc are generally using language extensions of a specific platform compiler which can make portability a pain.
Some used LLVM and some used GCC/Clang, I'm splitting over which is a better choice to build "statically typed" programming language.
When I set my projects up I generally use gcc/g++, but that in no means is the only correct way. Just a personal preference given the number of platforms that gcc supports, including embedded.
To compile to machine code, not bytecode.