No Image

Хороший компилятор для c

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

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

C++ — это объектно-ориентированный язык программирования, который изначально был создан как надмножество C . Языки C и C++ являются одними из самых популярных технологий, используемых для написания программ.

В этой статье перечислены бесплатные компиляторы C и C++ для различных операционных систем.

Бесплатные компиляторы и интерпретаторы C, C++ для компьютеров

Open Watcom V2 Fork

Он может работать и создавать исполняемые файлы под Windows ( 16-разрядные, 32-разрядные и 64-разрядные версии ), Linux ( 32-разрядные и 64-разрядные версии ), OS / 2 и MS-DOS ( 16-разрядные и 32-разрядные режимы ). Стоит пояснить, что Watcom — это был известный коммерческий компилятор, пока первоначальные разработчики не прекратили его продажи и не опубликовали исходный код ( в соответствии с публичной лицензией Sybase Open Watcom ).

Microsoft Visual Studio Community

Для индивидуальных или начинающих программистов Microsoft Visual Studio Community включает в себя много важных инструментов из коммерческих версий проекта. Вы получите в свое распоряжение IDE , отладчик, оптимизирующий компилятор, редактор, средства отладки и профилирования. С помощью этого пакета можно разрабатывать программы для настольных и мобильных версий Windows , а также Android . Компилятор C++ поддерживает большинство функций ISO C++ 11 , некоторые из ISO C++ 14 и C++ 17 . В то же время компилятор C уже безнадежно устарел и не имеет даже надлежащей поддержки C99 .

Программное обеспечение также поставляется с поддержкой построения программ на C# , Visual Basic , F# и Python . В то время, когда я писал эту статью, на сайте проекта утверждалось, что Visual Studio Community 2015 « бесплатный инструмент для индивидуальных разработчиков, проектов с открытым исходным кодом, научных исследований, образовательных проектов и небольших профессиональных групп ».

Clang: Фронтенд языка программирования C для LLVM

Clang — компилятор C , C++ , Objective C и Objective C++ , разработанный под Apple . Это часть проекта LLVM . Clang реализует различные стандарты ISO C и C++ , такие как C11 , ISO C++ 11 , C++ 14 и частично C++ 1z .

Он также поддерживает расширения, которые можно найти в семействе компиляторов C GNU . Компилятор C для Windows выпущен под лицензией BSD . К сожалению, на момент написания этой статьи, он предоставляется только в исходной форме, и вам придется собирать его самостоятельно.

MinGW-w64

Проект MinGW-w64 предоставляет библиотеки, заголовки, необходимые компиляторам C и C++ GNU для работы в системе Windows . В случае MinGW-w64 эти файлы поддержки позволяют создавать 64-битные программы в дополнение к 32-битным . Проект также предоставляет кросс-компиляторы, так что можно скомпилировать программу Windows из системы Linux .

AMD x86 Open64 Compiler Suite

Это версия набора компиляторов Open64 ( описанного ниже ), которая была настроена для процессоров AMD и имеет дополнительные исправления ошибок. Компилятор C / C++ соответствует стандартам ANSI C99 и ISO C++ 98 , поддерживает межъязыковые вызовы ( так как он включает в себя компилятор Fortran ), 32-битный и 64-битный код x86 , векторную и скалярную генерацию кода SSE / SSE2 / SSE3, OpenMP 2.5 для моделей с разделяемой памятью, MPICH2 для моделей с распределенной и разделяемой памятью; содержит оптимизатор, поддерживающий огромное количество оптимизаций ( глобальную, цикл-узел, межпроцедурный анализ, обратную связь ) и многое другое. Набор поставляется с оптимизированной AMD Core Math Library и документацией. Для этого набора компиляторов требуется Linux .

Компилятор C/C++ Open Source Watcom / Open Watcom

Является бесплатным компилятором для Windows 7 с открытым исходным кодом. Он генерирует код для Win32 , Windows 3.1 (Win16) , OS / 2 , Netware NLM , MSDOS ( 16-битный и 32-битный режим ) и т. д. Watcom был очень популярным компилятором несколько лет назад до тех пор, пока Sybase не закрыла его. Он также включает в себя довольно известный STLport ( реализация библиотеки стандартных шаблонов C++ ). Обновление: этот проект, похоже, застопорился, и в настоящее время запущен новый проект Open Watcom V2 Fork ( описан выше ).

Компилятор Digital Mars C/C++ (замена Symantec C++)

Digital Mars C / C ++ является заменой Symantec C++ с поддержкой компиляции программ для Win32 , Windows 3.1 , MSDOS и 32-разрядных расширенных MSDOS . Если используемый ПК не имеет процессора с плавающей запятой ( машины pre-Pentium ), можно связать эмуляцию с плавающей запятой в вашей программе. Компилятор поддерживает определение C++ из аннотированного руководства по C++ ( ARM ) и расширенные функции языка AT & T версии 3.0 , включая шаблоны, вложенные классы, вложенные типы, обработку исключений и идентификацию типа во время выполнения.

UPS Debugger (интерпретатор C)

Это графический отладчик уровня исходного кода для X Window , который содержит встроенный интерпретатор языка C . Он может обрабатывать один или несколько исходных файлов. Можно использовать его для создания исполняемого файла с байтовым кодом и выполнения интерпретатора в этом исполняемом файле. Если вам нужен интерпретатор для отладки или создания прототипов программ, или просто для изучения языка, попробуйте этот инструмент. Он поддерживает следующие платформы: Solaris , SunOS , Linux , FreeBSD , BSD / OS и некоторые другие Unix-платформы .

The BDS C Compiler

Помните старый ( популярный ) компилятор C BDS для систем CP / M 8080 / Z80 ? В настоящее время этот компилятор языка C находится в публичном доступе, в комплекте с исходным кодом языка ассемблера. Пакет представляет собой розничную версию компилятора с компоновщиком и руководством пользователя. Его можно использовать для простой генерации кода 8080/8085 / Z80 для встраиваемых систем ( то есть создавать собственные процедуры для замены любого кода библиотеки, который обращается к функциям операционной системы ).

Читайте также:  Игры с захватывающим сюжетом на пк список

Компилятор C / C++ Bloodshed Dev

Это интегрированная среда разработки Win32 , включающая в себя компилятор C++ egcs и отладчик GNU из среды Mingw32 . А также редактор и другие средства, облегчающие разработку программ с использованием компилятора Mingw32 gcc на платформе Windows . Он также содержит программу установки для приложений.

Компилятор C Orange

Он работает как в Windows , так и в DOS , имеет интегрированную среду разработки с редактором программ ( с подсветкой синтаксиса и автоматическим завершением кода ). Он может генерировать программы для Win32 и MSDOS , а также файлы Intel и Motorola hex ( что полезно, если вы пишете программы для встроенных систем ). Для вывода MSDOS ваши программы будут использовать расширитель DOS .

DeSmet C

DeSmet C должен быть знаком тем, кто программировал на C в 1980-х годах. Это компилятор C для MSDOS . Он был выпущен под лицензией GNU GPL и поставляется с руководствами, редактором и сторонним оптимизатором.

Apple Xcode для Mac OS X

Xcode — это интегрированная среда разработки Apple , которая включает в себя редактор с подсветкой синтаксиса, систему управления сборкой, отладчик, компилятор C GNU ( gcc ), конструктор интерфейса, AppleScript Studio , поддержку разработки на Java , инструменты разработки WebObjects . Чтобы получить в свое распоряжение данные инструменты необходимо быть участником Apple Developer Connection ( ADC ) . Но онлайн-членство является бесплатным.

Tiny C Compiler — самый компактный Linux C компилятор

Этот небольшой компилятор C для Linux и Windows генерирует оптимизированные двоичные файлы x86 . Утверждается, что он собирает, компонует и связывает код в несколько раз быстрее, чем GCC . В настоящий момент разработчики стремятся обеспечить соответствие ISO C99 . Компилятор также включает необязательную проверку границ. Он обрабатывает файлы скриптов C ( просто добавьте в Linux shebang код #!/usr/local/bin/tcc -run в первую строку исходного кода на C , чтобы он выполнялся напрямую ). TCC распространяется под лицензией GNU General Public License .

Portable Object Compiler

Это набор библиотек классов и компилятор Objective C , который преобразует код Objective C в простой C-код . Работает на Windows , Linux , OS / 2 , Macintosh и т. д.

C & C++ компиляторы Mingw32

Эта система поставляется с компилятором GNU C / C++ , который можно использовать для создания исполняемых файлов Win32 . Она содержит собственный , который находится в открытом доступе. Предполагается, что приложения, созданные с использованием этой системы, будут быстрее, чем, те которые созданы с помощью Cygwin32 , и они не ограничиваются положениями лицензии GNU . Mingw32 поставляется с инструментами для обработки текста ( sed, grep ), генератором лексического анализатора ( flex ), генератором парсеров ( bison ) и т. д. Mingw32 также поставляется с компилятором ресурсов Windows .

Компилятор C / C++ GNU

На странице компилятора C GNU можно получить ссылки на бинарные файлы и исходный код для компилятора GNU C . Также можно использовать приведенные в этой статье ссылки на наиболее часто запрашиваемые бинарные версии ( MSDOS и Win32 ).

Компилятор C Pelles

Еще один компилятор C , основанный на LCC ( смотрите также LCC-Win32 ). Он включает в себя компилятор C , компоновщик, компилятор ресурсов, сообщений, утилиту make и другие инструменты. Он компилирует код для Windows и Pocket PC .

Компилятор C Compaq

Пользователи Linux / Alpha теперь могут бесплатно скачивать и использовать компилятор Compaq , просто заполнив форму и приняв лицензионное соглашение. Компилятор может использоваться для генерации любых программ, коммерческих или иных. Он включает в себя математическую библиотеку и отладчик ( ladebug ), перенесенный из True64 Unix . Он поставляется с обычными справочными страницами, а также справочником по языку и руководством программиста.

Интерпретатор C / C++ Ch Embeddable (стандартная версия)

Интерпретатор C / C++ , поддерживающий стандарт ISO 1990 C ( C90 ), основные функции C99 , классы C++ , а также расширения к языку С , такие как вложенные функции, строковый тип и т. д. Он может быть встроен в другие приложения и аппаратные средства, использоваться в качестве языка сценариев. Код C / C++ интерпретируется напрямую без компиляции промежуточного кода. Поскольку этот интерпретатор поддерживает Linux , Windows , MacOS X , Solaris и HP-UX , созданный вами код можно перенести на любую из этих платформ. Стандартная версия бесплатна для личного, академического и коммерческого использования. Для загрузки пакета необходимо зарегистрироваться.

Компиляторы C и C++ DJGPP

Это система разработки, основанная на хорошо известном компиляторе C / C++ GNU . Она генерирует 32-разрядные исполняемые файлы MSDOS , которые являются файлами с длинными именами Windows 95 . Это очень функциональная система с IDE , графическими библиотеками, генераторами лексического анализатора ( flex ), генераторами парсеров ( bison ), утилитами обработки текста и так далее. Компилятор языка C , утилиты и библиотеки поставляются с исходным кодом.

Cilk — ANSI компилятор на основе C

Cilk — это язык на основе ANSI C , который может использоваться для многопоточного параллельного программирования. Это особенно эффективно для использования динамического, высоко асинхронного параллелизма в стиле параллельных данных или передачи сообщений. На официальном сайте упоминается, что Cilk уже используется для разработки трех шахматных программ мирового класса: StarTech , Socrates и Cilkchess .

Sphinx — компилятор C—

Это своего рода сочетание компилятора C и ассемблера, который позволяет « создавать программы с возможностями и читабельностью C , сохраняя при этом эффективность языка ассемблера ». Он может создавать исполняемые файлы MSDOS или файлы .OBJ , которые можно применять вместе с другими компоновщиками для создания исполняемого файла. По приведенной выше ссылке можно найти исходный код и документацию для компилятора. Если вы хотите получить предварительно скомпилированный бинарный файл, это можно сделать на неофициальном сайте компилятора C— Sphinx .

Читайте также:  20 106 Код какой страны

Компилятор C LSI C-86

Сайт этого компилятора написан на японском языке. Он выглядит как кросс-компилятор, позволяющий генерировать код для ROM . Старая версия компилятора ( 3.30c ) предоставляется бесплатно. Бесплатная версия работает только на MSDOS .

Кросс-компилятор C SDCC

Это кросс-компилятор C , предназначенный для микропроцессоров Intel 8051 , DS390, Z80, HC08 и PIC. Он также может быть переназначен для других 8-битных микроконтроллеров или ОСТО . SDCC поставляется с перенастраиваемым ассемблером и компоновщиком, отладчиком исходного уровня и симулятором. Библиотеки совместимы со стандартом C99 . Исходный код для компилятора доступен под лицензией GPL . Поддерживаются такие платформы, как Linux , Windows , Mac OS X , Alpha , Sparc и другие.

Компилятор C LADSoft CC386

Это компилятор ANSI C для MSDOS / DPMI и Win32 , который поставляется с библиотекой среды выполнения, компоновщиком, отладчиком, DOS-расширителем ( версия MSDOS ), IDE ( версия Win32 ) и утилитой make . Также доступен исходный код. При работе в режиме совместимости с C99 он компилирует большинство конструкций C99 .

Проект Cygwin (компиляторы C и C ++)

Этот «проект» включает в себя коммерческий компилятор ( GNU C / C++ ), который генерирует графический интерфейс Win32 и консольные приложения. Предоставляется исходный код компилятора, библиотек и инструментов. Обратите внимание, что опция по умолчанию в этом пакете требует от вас распространять исходный код, если вы компилируете и связываетесь со своими библиотеками. Существует также специальная вызываемая опция, которая задает возможность связи с альтернативными библиотеками, позволяя распространять свои приложения без источников.

Компилятор C LCC-Win32

Это компилятор C для Windows , который генерирует графический интерфейс Win32 и консольные приложения. Он поставляется со своим собственным компоновщиком, IDE , отладчиком, редактором и компилятором ресурсов. LCC- Win32 основан на компиляторе LCC и является бесплатным только для некоммерческого использования.

LCC — перенанаправляемый компилятор для ANSI C

LCC — это компилятор C ( только исходный код ), который генерирует код для Alpha , Sparc , MIPS R3000 и Intel x86 . Он является основой как минимум для двух других компиляторов Win32 C ( также описанных выше ).

Cyclone C

Cyclone C не является компилятором ANSI C в строгом значении, а представляет собой компилятор « безопасного диалекта » C . Он обеспечивает безопасность типов, имеет множество проверок для защиты от переполнения буфера, связанных с массивами нарушений и т. д. В настоящее время он работает на Linux и Windows ( в последнем случае через Cygwin ), для него требуется наличие в системе инструментов компиляции GNU .

Leonardo IDE

Это IDE на базе Macintosh , компилятор и отладчик для программ на C . Он включает в себя редактор с подсветкой синтаксиса, ANSI C компилятор, компилятор для языка визуализации ALPHA , редактор графов, обратимый виртуальный процессор и т. д.

Обратите внимание, что программы в код, который будет выполняться для виртуального ЦПУ. Виртуальная машина и отладчик позволяют выполнять код вперед и назад и поддерживать многозадачность. IDE поставляется с анимированными алгоритмами, примерами исходного кода таких игр, как Tetris , Checkers и других. IDE полезна для проверки и отладки исходного кода, поиска процессов, неэффективно использующих память и т. д.

Примечание: этот проект был прекращен.

Turbo C 2.01

Старый, но проверенный Turbo C 2.01 для DOS доступен бесплатно по решению новых владельцев Borland . Это был популярный компилятор C во времена MSDOS , известный своей быстрой сборкой, интегрированной средой разработки (« IDE ») и графической библиотекой ( DOS ).

Данная публикация представляет собой перевод статьи « Free C/C++ Compilers and Interpreters » , подготовленной дружной командой проекта Интернет-технологии.ру

Самый древний и популярный компилятор — это GCC. Он поддерживает миллиард платформ, хорошо фичи новых стандартов умеет, стабильный, быстрый. Классика, работающая всегда и везде. Версия для винды ставится либо из Mingw-w64, он довольно прилично отстаёт от основной ветки, но работает неплохо. Либо можно поставить из пакета MSYS2, там всё свежее и постоянно обновляется.

Visual Studio — если вы начнёте с неё, то потом будет очень тяжело перейти на другой компилятор, всё будет непривычно и ничего не будет работать. Ибо вижуал студия подразумевает тесную интеграцию IDE и компилятора. Ко всему прочему, если вы пишете код в вижуал студии и он компилируется, это ещё не значит, что код соответствует стандартам, и будет компилироваться где-либо ещё. Так как майкрософты, по классике, клали большой и толстый на все эти ваши стандарты. Да, IDE у них более-менее юзабельная, но у компилятора своя атмосфера.

Ну, и самый, на мой взгляд, прогрессивный и удобный компилятор — clang. Очень молодой, но очень фичастый. Очень удобные сообщения об ошибках, всё понятно и наглядно. Поддерживает даже черновики и пропозалы новейших стандартов. Для новичка, более чем, рекомендую! Поставить его для винды можно всё из того же пакета MSYS2. Можно, конечно, качать сборку с официального сайта, но она не всё поддерживает в винде. Ещё есть вариант поставить clang вместе с Visual Studio 2017 Community. Там есть такая фича, не пробовал, правда, но в теории, должно работать.

В качестве IDE ещё могу посоветовать Clion. Крутая штука, хоть и тормознутая малость. Из мелких и легковесных — juci. Очень шустрая современная штука, правда, пока не особо чего умеет.

Читайте также:  Простые кнопочные телефоны нокиа

Так же, для обучения сразу включайте все ворнинги, все ошибки, отключайте расширения компиляторов. Ибо привыкните к ним, а потом поймёте, что это не стандарт и будет очень непривычно.

После многочисленных споров на тему «Какой компилятор лучше генерирует код», появилась идея провести самому испытания. Основной целью испытания была проверка скорости работы программы с оптимизацией по скорости. Результат тестирования: среднее арифметическое время выполнения тестовой функции в миллисекундах (1/1000 сек). т.е. чем меньше тем лучше.

В тестировании участвовали:

  • Intel C++ Compiler Pro 11.1.054;
  • GCC 4.5.0 (MinGW);
  • MS C/C++ Compiler 15.00.21022.08 (VS 2008);
  • CodeGear C++ Builder 11.0 (C++Builder 2007);
  • Tiny C Compiler 0.9.25.

Железо для теста:

  • Компьютер: CPU Intel E5200 (2-ядерный) 2.5 Ггц + 2 Гб ОЗУ;
  • Ноутбук: CPU AMD Athlon QL-62 (2-ядерный) 2 Ггц + 3 Гб ОЗУ.

ОС для теста:

MS Windows XP SP3 Eng x32 на ноутбуке и на компьютере (с одного диска устанавливались и один и тот же SP3 ставился).

Варианты компиляции:

  1. Отключена любая оптимизация;
  2. Включена вся возможная оптимизация.

Ограничения на тестирование:

  • Исходный код тестовой программы не изменяется в зависимости от компилятора;
  • Тестовая функция не использует функции системы, т.е. только вычислительные операции, все функции связанные с вызовом системных функций вызываются до и после замера времени;
  • Не используются библиотеки распараллеливания типа OpenMP;
  • Вычисления производятся только в одном потоке;
  • Компьютер не загружен больше никакими другими программами, только запущенная Windows + Notepad + тестовая программа;
  • Для тестов не использовалась VCL, MFC, CLR, ATL;
  • Код программ компилировался именно как С код, а не С++;
  • Для Tiny C Compiler использовался только 1 вариант компиляции, потому что он не поддерживает оптимизацию на уровне кода. Из документации: Оптимизация кода ограничена вычислением константных выражений на этапе компиляции, заменой операций умножения и деления операциями сдвига где это возможно, а также некоторыми другими действиями. Оптимизация переходов не производится, так как это потребовало бы организацию промежуточного кода в более абстрактном виде.

Метод тестирования:

  1. Выделение памяти для буферов;
  2. Получение UserTime текущего потока через GetThreadTimes;
  3. Выполнение тестовой функции;
  4. Получение UserTime текущего потока через GetThreadTimes;
  5. Получение разницы во времени с точностью до миллисекунд (1/1000 сек);
  6. Повторение последних 4-х действий 10 раз;
  7. Вычисление среднего арифметического значения времени.

Алгоритм вычислительной функции:

  1. Инициализация ключевой последовательности для алгоритма шифрования RC4;
  2. Инициализация ключевой последовательности для алгоритма шифрования AES-128;
  3. Заполнение первого тестового буфера данными полученными из генератора RC4;
  4. Вычисление CRC32 для первого тестового буфера;
  5. Шифрование первого тестового буфера алгоритмом AES-128, блоками по 128 бит, с помещением результата во второй тестовый буфер;
  6. Заполнение первого тестового буфера данными полученными из генератора RC4, т.е. первоначальные данные затираются полностью;
  7. Расшифровка второго тестового буфера с помещением результата в первый тестовый буфер;
  8. Подсчет CRC32 для расшифрованного первого тестового буфера;
  9. Сравнение CRC до шифрование и после.

Параметры теста:

  • Кол-во данных для шифрования — 1600 килобайт (102400 блоков);
  • Кол-во тестовых итераций для вычисления среднего арифметического значения времени — 10.

Результаты тестирования:
Intel C++ Compiler Pro 11.1.054

  • Ноутбук без оптимизации: 6301 мс;
  • Ноутбук с оптимизацией: 971 мс;
  • Компьютер без оптимизации: 4541 мс;
  • Компьютер с оптимизацией: 867 мс.

GCC 4.5.0 (MinGW)

  • Ноутбук без оптимизации: 6568 мс;
  • Ноутбук с оптимизацией: 1691 мс;
  • Компьютер без оптимизации: 4979 мс;
  • Компьютер с оптимизацией: 1521 мс.

MS C/C++ Compiler 15.00.21022.08 (VS 2008)

  • Ноутбук без оптимизации: 5149 мс;
  • Ноутбук с оптимизацией: 1574 мс;
  • Компьютер без оптимизации: 3740 мс;
  • Компьютер с оптимизацией: 1290 мс.

CodeGear C++ Builder 11.0 (C++Builder 2007)

  • Ноутбук без оптимизации: 4982 мс;
  • Ноутбук с оптимизацией: 3854 мс;
  • Компьютер без оптимизации: 4006 мс;
  • Компьютер с оптимизацией: 3185 мс.

Tiny C Compiler 0.9.25

  • Ноутбук: 6275 мс;
  • Компьютер: 4606 мс.

Более наглядно:График времени выполнения кода:График скорости выполнения кода относительно лидера теста (лидер теста — 100%)

Итоги:
По результатам тестирования на оптимизацию по скорости, компиляторы занимают следующие места:

  1. Intel C++ Compiler Pro 11.1.054;
  2. MS C/C++ Compiler 15.00.21022.08 (VS 2008);
  3. GCC 4.5.0 (MinGW);
  4. CodeGear C++ Builder 11.0 (C++Builder 2007);
  5. Tiny C Compiler 0.9.25.

Как видно, ребята из Intel хорошо постарались (на 32% код работал быстрее чем у ближайшего соперника) и их код имеет отличную оптимизацию не зависимо от того что он работает на Intel или AMD процессоре.

В тоже время С++ Builder показал себя не с лучшей стороны (отставание в 2 раза), что свидетельствует о чуть другой специфики его применения.

Ну а про Tiny C Compiler 0.9.25 и речи не может быть, потому что он вообще не поддерживает оптимизацию переходов, вот и выходит, что скорость выполнения программы находится на уровне с другими компиляторами без оптимизации при компиляции.

Конечно С++ Builder оказался чуть староват потому что не нашел я у себя более свежей версии. Хотя мне кажется, там мало что изменилось в этом плане.

Заключение
По результатам тестирования нельзя судить о компиляторе, что он хорош или плох, потому что каждому своё применение, а можно лишь говорить о том, какой их них подойдет для создания программных продуктов связанных с вычислительными операциями.

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector