De acordo com comentários e respostas aceitas abaixo, gcc e g++ são o mesmo executável. Por serem iguais, o valor de argv[0]
determinará o comportamento, seja o argumento "gcc" ou "g++".
Alguns comentários aqui parecem confirmar, mas alguns parecem sugerir executáveis separados
No entanto, vejo diferentes números de inode (e tamanhos de arquivo) para os dois.
owner@fedora:~/code/make_test$ ls -ilh /usr/bin/gcc
1584205 -rwxr-xr-x. 3 root root 1020K May 21 17:00 /usr/bin/gcc
owner@fedora:~/code/make_test$ ls -ilh /usr/bin/g++
1584212 -rwxr-xr-x. 4 root root 1.0M May 21 17:00 /usr/bin/g++
Acontece que observei o seguinte ao compilar um programa hello_world.cpp com o -v
sinalizador:
gcc version 13.3.1 20240522 (Red Hat 13.3.1-1) (GCC)
Considerei a possibilidade de a Red Hat ter implementado seu próprio gcc com seus próprios idiomas, mas não parece que minha instalação do gcc venha de algum repositório fora do padrão. Estou usando o Fedora 39 e não esperava ver o conteúdo do Red Hat em meu sistema operacional (embora não veja por que o conteúdo do RH não poderia ter sido mesclado em uma distribuição upstream em algum momento).
owner@fedora:~/code/make_test$ dnf repolist
repo id repo name
fedora Fedora 39 - x86_64
fedora-cisco-openh264 Fedora 39 openh264 (From Cisco) - x86_64
opera Opera packages
rpmfusion-free RPM Fusion for Fedora 39 - Free
rpmfusion-free-updates RPM Fusion for Fedora 39 - Free - Updates
rpmfusion-nonfree RPM Fusion for Fedora 39 - Nonfree
rpmfusion-nonfree-updates RPM Fusion for Fedora 39 - Nonfree - Updates
updates Fedora 39 - x86_64 - Updates
owner@fedora:~/code/make_test$ dnf whatprovides gcc
Last metadata expiration check: 0:02:01 ago on Tue 30 Jul 2024 08:16:27 PM MST.
gcc-13.2.1-3.fc39.x86_64 : Various compilers (C, C++, Objective-C, ...)
Repo : fedora
Matched from:
Provide : gcc = 13.2.1-3.fc39
gcc-13.3.1-1.fc39.x86_64 : Various compilers (C, C++, Objective-C, ...)
Repo : @System
Matched from:
Provide : gcc = 13.3.1-1.fc39
gcc-13.3.1-1.fc39.x86_64 : Various compilers (C, C++, Objective-C, ...)
Repo : updates
Matched from:
Provide : gcc = 13.3.1-1.fc39
Então, acredito que tenho o gcc "oficial" e não entendo porque gcc e g++ não são o mesmo arquivo. O gcc e o g++ agora são executáveis distintos, sempre foram distintos e, se não, quando foram divididos? Ou apenas fui mal informado sobre eles serem iguais?