根据下面链接的评论和已接受的答案,gcc 和 g++ 是相同的可执行文件。因为它们相同,所以 的值argv[0]
将决定行为,无论参数是“gcc”还是“g++”。
这里的一些评论似乎证实了这一点,但有些评论似乎暗示了单独的可执行文件
但是,我发现两者的 inode 编号(和文件大小)不同。
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++
在使用该标志编译 hello_world.cpp 程序时,我偶然观察到了以下内容-v
:
gcc version 13.3.1 20240522 (Red Hat 13.3.1-1) (GCC)
我考虑过 Red Hat 用自己的习惯用法实现了自己的 gcc 的可能性,但我的 gcc 安装似乎并非来自任何非标准存储库。我使用的是 Fedora 39,没想到我的操作系统中会有 Red Hat 内容(尽管我不明白为什么 RH 内容不能在某个时候合并到上游发行版中)。
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
因此,我相信我拥有“官方” gcc,但我不明白为什么 gcc 和 g++ 不是同一个文件。gcc 和 g++ 现在是不同的可执行文件吗?它们一直都是不同的吗?如果不是,它们是什么时候分开的?还是我只是被误导了,认为它们曾经是相同的?