Perché il comando gcc su MacOS esegue clang?

Apple non fornisce più gcc con Xcode. C'è stato un conflitto tra la Free Software Foundation e Apple circa 10 anni fa, IIRC a causa di problemi di licenza/modello di licenza.

Come risultato, l'ultima versione di gcc che Apple ha usato è stata gcc 4.2.1, Apple ha lavorato su clang per qualche tempo e ha sostituito gcc con clang.

Quindi l'attuale applicazione gcc installata è solo un piccolo launcher per il sistema di compilazione clang/xcode. If you disassemble it you’d see (I am at older machine now with Xcode 9.2):

  1. $ otool -tV /usr/bin/gcc 
  2. /usr/bin/gcc: 
  3. (__TEXT,__text) section 
  4. _main: 
  5. 0000000100000f77 pushq %rbp 
  6. 0000000100000f78 movq %rsp, %rbp 
  7. 0000000100000f7b leal -0x1(%rdi), %eax 
  8. 0000000100000f7e leaq 0x8(%rsi), %rdx 
  9. 0000000100000f82 leaq 0x29(%rip), %rdi