1

Есть одна вещь, которую я не понимаю - и это вопрос, что такое g++?

Я искал широкую сеть (во всяком случае, я думал, по крайней мере). Никакого результата не получилось (самое близкое, что я пришел к тому, что g++, это).

Так является ли g++ библиотекой, разработанной для компилятора GCC (или это сам компилятор)? Я знаю это, печатая

$sudo apt-get install g++

в системах на основе Debian будет установлен g++. Но сейчас я довольно озадачен тем, что такое g++. Так это библиотека C++ или сам компилятор? Насколько я знаю, поиск g++ в Google (я уверен, что и другие поисковые системы) не дает никаких полезных результатов.

Спасибо, что ответили.

1 ответ1

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .