компилятор 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 ++