Что такое g ++?

423
John Lee

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

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

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

$sudo apt-get install g++ 

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

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

1
Я просто погуглил "g ++" и [это был первый вопрос] (https://stackoverflow.com/q/172587/1937994). Ответы довольно хорошие. gronostaj 5 лет назад 5
@gronostaj спасибо! Я прочитал об этом. John Lee 5 лет назад 0
"не дает никаких полезных результатов." Позволю себе не согласиться. Как вы выполняете этот поиск? SiXandSeven8ths 5 лет назад 0

1 ответ на вопрос

1
plugwash

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

Похожие вопросы