Что такое g++?
Есть одна вещь, которую я не понимаю - и это вопрос, что такое g ++?
Я искал широкую сеть (во всяком случае, я думал, по крайней мере). Никакого результата не получилось (самое близкое, что я понял к тому, что такое g ++, это).
Так является ли g ++ библиотекой, разработанной для компилятора GCC (или это сам компилятор)? Я знаю это, печатая
$sudo apt-get install g++
в системах на основе Debian будет установлен g ++. Но сейчас я довольно озадачен тем, что такое g ++. Так это библиотека C++ или сам компилятор? Насколько я знаю, поиск g ++ в Google (я уверен, что и другие поисковые системы) не дает никаких полезных результатов.
Спасибо, что ответили.
1 ответ
компилятор GCC
Одним из источников путаницы здесь является то, что GCC имеет несколько значений, иногда он может относиться к компилятору C конкретно ("Компилятор GNU C"), иногда он может относиться ко всей коллекции компиляторов ("Коллекция компиляторов GNU").
Коллекция компиляторов GNU - это, как следует из названия, коллекция компиляторов, которые совместно используют некоторый код, среди которых есть компилятор C и C++.
Двоичные файлы "gcc" и "g ++" являются "драйверами компилятора", они обрабатывают синтаксический анализ командных строк и вызывают программы (компилятор, компоновщик, препроцессор, если он не интегрирован), которые выполняют фактическую работу с правильными параметрами.
Фактическими компиляторами являются "cc1" для C и "cc1plus" для C++.
"g ++" имеет дополнительные поведения, специфичные для C++, так что он может компилировать и связывать программу C++ из коробки. См. /questions/551085/kak-obedinit-fajlyi-v-razdel-linux/551091#551091 для получения дополнительной информации.
Теперь о пакетах 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++