компилятор GCC
Один из источников путаницы заключается в том, что GCC имеет несколько значений, иногда он может относиться к компилятору C конкретно ("Компилятор GNU C"), иногда он может относиться ко всей коллекции компиляторов ("Коллекция компиляторов GNU").
Коллекция компиляторов GNU - это, как следует из названия, коллекция компиляторов, которые совместно используют некоторый код, среди которых есть компилятор C и C++.
Двоичные файлы "gcc" и "g++" являются "драйверами компилятора", они обрабатывают синтаксический анализ командных строк и вызывают программы (компилятор, компоновщик, препроцессор, если он не интегрирован), которые выполняют фактическую работу с правильными параметрами.
Фактическими компиляторами являются "cc1" для C и "cc1plus" для C++.
«g ++» обладает дополнительным поведением, специфичным для c ++, так что он может компилировать и связывать программу c ++ из коробки. См. Https://stackoverflow.com/a/173007/5083516 для получения дополнительной информации.
Теперь о пакетах Debian.
Debian называет это двоичными файлами "gcc" и «g ++» с префиксом архитектуры и суффиксом версии, поэтому, например, в системе Debian, которую я использую для написания этого поста, «g ++» является символической ссылкой на «g ++- 6», которая turn - символическая ссылка на x86_64-linux-gnu-g ++- 6
Пакет Debian "g++" на самом деле не содержит компилятор, он просто содержит символические ссылки от не версированных имен на версионные имена и (в растяжке Debian) зависит от "cpp", "g++- 6", "gcc" и " gcc-6 "(другие версии будут иметь другой номер версии).
Пакет Debian "g++ - 6" содержит фактические двоичные файлы для g++ версии 6.x (названные x86_64-linux-gnu-g++ - 6 на x86-64) и cc1plus (расположенные в каталоге, специфичном для версии и цели компилятора архитектура).
«g ++ - 6», в свою очередь, зависит от «libstdc ++ - 6-dev», он содержит заголовки для стандартной библиотеки c ++, статическую версию стандартной библиотеки C ++ и символическую ссылку на динамическую версию стандартной библиотеки C ++ (и пара других статических библиотек, которые имеют значение только в необычных обстоятельствах)
«libstdc ++ - 6-dev», в свою очередь, зависит от «libstdc ++ 6», который содержит динамическую версию стандартной библиотеки C ++ (обратите внимание, что 6 в libstdc ++ - 6-dev и 6 в libstdc ++ 6 относятся к разным вещам в первом случае это версия компилятора, во втором - это версия стандартной библиотеки C).
Таким образом, установка пакета "g++" тянет все, что вам нужно для написания программ на C++