Компилятор GCC и CC

Anonim

Компилятор GCC против CC

CC - это имя, присвоенное команде компилятора UNIX. Он используется как команда компилятора по умолчанию для вашей операционной системы, а также является исполняемым с той же командой. GCC, с другой стороны, является операционной системой GNU Compiler. В системах, которые работают на GNU и Linux, обычно обнаруживается, что CC является ссылкой, так что скрипты могут использовать любой компилятор взаимозаменяемо и легко. Существуют различные различия в отношении использования коллекции компилятора GNU и компилятора CC. Эти различия обычно можно сгруппировать по двум основным группам. Один из них более конкретный, в то время как другая группа более общая.

Различия

Основное различие между двумя сделками с компиляторами C и компиляторами C ++. Компиляторы C ++ действительно принимают программы на C ++, но не компилируют программы на C произвольно. Это, как правило, верно, хотя было показано, что можно написать код языка C в подмножестве, хорошо понятном C ++, даже если многие C-программы не являются допустимыми программами на C ++. С другой стороны, компиляторы C принимают программы C, но отклоняют большинство программ на C ++, которые работают в них. Причина, по которой возникает эта проблема, заключается в том, что большинство программ на C ++ запускают конструкты, недоступные C.

Доступные библиотеки для этих языков программирования во многом зависят от языка. Программы C ++ могут выполняться в библиотеках C, но это зависит от платформы. С другой стороны, программы C не могут использовать библиотеки C ++; поэтому C ++ имеет больший набор библиотек, чем C.

В Solaris объектный код, созданный командой компилятора, никоим образом не совместим с кодом, созданным g ++, поскольку это два отдельных компилятора, и их соглашения будут отличаться. Основные отличия - обработка исключений и искажение имен. Тем не менее, важно отметить, что изменение имени важно для предотвращения совместимости объектов друг от друга. Это фактически указывает на то, что использование библиотеки, скомпилированной в CC, требует, чтобы вся программа была скомпилирована в CC. Кроме того, если вам нужно использовать библиотеку, скомпилированную с CC, а другую с g ++, необходимо выполнить перекомпиляцию библиотек для обеспечения желаемой функциональности.

В качестве генерируемого ассемблера GCC, который является сборником компиляторов GNU, чрезвычайно хорош в этой задаче. Однако родные компиляторы работают лучше. Можно сказать, что компиляторы Intel имеют тщательную оптимизацию, которые еще не реплицируются в GCC.

Оба компилятора во всех новых стандартах соответствуют текущим стандартам, хотя существуют небольшие различия между стандартными языками и языком, который поддерживает компилятор. Эти стандарты (C ++ 98, C ++ 2003, C99). Поддержка старых C89 доступна в обоих компиляторах, и понимание ожидаемых ответов имеет решающее значение для обеспечения того, чтобы компилятор откатился, как ожидалось. В целом GCC, похоже, сосредоточен на том, чтобы облегчить жизнь благодаря расширениям и настройкам, которые можно сделать для достижения желаемого результата.

Резюме

Существует проблема с перекрестной совместимостью библиотек компиляторов C и C ++.

Программы на C ++ могут выполняться в библиотеках C, но это зависит от платформы.

Для использования библиотеки, состоящей из CC, требуется, чтобы вся программа была скомпилирована с CC, а не с GCC. Если у вас есть библиотека, скомпилированная в CC и g ++, одна из библиотек должна быть перекомпилирована.

GCC делает замечательную работу по созданию качественных сборок.

Как CC, так и GCC в языковых функциях отлично подходят по отношению к текущим стандартам.