Ссылка на бесплатный компилятор Visual Studio приведена ниже в разделе Загрузки. Права на использование Visual Studio Community зависят от сегмента клиента и сценариев использования. Посетите веб-сайт Microsoft.
Ссылка на компилятор Visual Studio приведена ниже в разделе Загрузки.
Компиляторы Intel больше не поддерживаются.
Установку 32- и 64-разрядных версий MinGW можно выполнить с помощью одной и той же программы установки с использованием различных параметров. Ссылка для скачивания: https://sourceforge.net/projects/mingw-w64. Запустите программу установки MinGW и выберите:
Были протестированы следующие компиляторы (более поздние версии обычно совместимы):
Примечание. Компиляторы GCC имеют некоторые ограничения. Например, во время установки требуются дополнительные модули. Нажмите здесь для просмотра подробной информации. Ссылка для скачивания приведена ниже.
Dymola на платформе Windows поддерживает кросс-компиляцию для Linux с помощью компилятора Windows Subsystem for Linux (WSL) GCC. Настройка WSL по умолчанию — только 64-разрядная версия, Dymola использует это ограничение. См. Использование Windows Subsystem for Linux с Dymola.
Обратите внимание, что на платформе Windows необходимо отдельно установить компилятор C/C++. Компилятор C можно установить до установки Dymola или после нее. Вы можете запускать Dymola и просматривать модели, но для преобразования любых моделей необходимо установить компилятор C. Чтобы изменить компилятор, используемый приложением Dymola для преобразования модели, выберите пункт меню Имитационное моделирование > Настройка…, затем выберите вкладку «Компилятор». (Пример вкладки «Компилятор» приведен справа). Выбранный компилятор сохраняется в настройках пользователя и используется во всех последующих установленных версиях Dymola.
В системах Linux используется стандартный компилятор. Для управления процессом компиляции используется сценарий оболочки insert/dsbuild. sh. Dymola 2022x работает в 64-разрядной версии Red Hat Enterprise Linux с версией gcc 8.3.1 и совместимыми системами. Помимо gcc код модели на языке C может компилироваться с помощью clang. Для просмотра инструкций по изменению компилятора и дополнительных примечаний нажмите здесь.
На суперкомпьютере Polus установлены как компиляторы семейства GNU, так и фирменные компиляторы компании IBM поддерживающие языки программирования C/C++, Fortran. Ниже они перечислены в таблице, постфикс _r в названии скрипта, применяемого для компиляции, говорит о том, что будут использованы потокобезопасные компоненты. Такие скрипты необходимо вызывать при сборке OpenMP- и pthreads-программ.
Компилятор | C/C++ | Fortran | ||||||
---|---|---|---|---|---|---|---|---|
C | C++ | Fortran | Fortran 90 | Fortran 95 | Fortran 2003 | Fortran 2008 | ||
GNU | gcc | g++ | gfortran | — | — | — | — | |
IBM XL | xlc | xlC/xlc++ | xlf | xlf90 | xlf95 | xlf2003 | xlf2008 | |
потокобезопасная версия | xlc_r | xlC_r/xlc++_r | xlf_r | xlf90_r | xlf95_r | xlf2003_r | xlf2008_r |
Для создания и запуска программ написанных с использованием MPI стандарта необходимо загрузить модуль SpectrumMPI. Для этого необходимо выполнить следующую коменду
module load SpectrumMPI
Возможно также использование OpenMPI, для его загрузки нужно выполнить
module load OpenMPI
Однако использование SpectrumMPI предпочтительней. Всё дальнейшее описание будет приводится для SpectrumMPI.
Компиляторы программ, использующих стандарт MPI перечислены в таблице ниже.
Компилятор | C/C++ | Fortran | |||
---|---|---|---|---|---|
C | C++ | Fortran | Fortran 77 | Fortran 90 | |
mpicc | mpicxx | mpifort | mpif77 | mpif90 | |
IBM XL | mpixlc | mpixlC | mpixlf | — | — |
Для всех компиляторов, не только компиляторов IBM, но и gcc, а так же большинства других компиляторов, имеются следующие ключи:
Ключ | Значение |
---|---|
-I include_dir | опция, которая задаёт пути для поиска include файлов |
-L library_dir | задаёт пути для поиска подключаемых библиотек. |
-l library_name | линкует с указанной библиотекой |
-o file_name | задаёт имя бинарного файла, который будет получен как результат деятельности компилятора |
-g | добавление отладочной информации в бинарный код, после этого при запуске программы через отладчик будет доступна информация об исходном коде программы. |
-ON | Опции начального уровня оптимизации (N число от 1 до 5) |
Нестандартные ключи компиляторов IBM
Ключ | Значение |
---|---|
-qsmp=omp | обеспечивает возможность писать программы с использованием OpenMP стандарта. |
-qsmp=auto | для автоматического распараллеливания программ |
-qarch=pwr8 | компилятор генерирует оптимальный код для Power8 процессоров. |
-qhot | оптимизация кода с принудительным внедрением параллелизма внутрь кода, здесь начинает использоваться параллелизм функциональных устройств архитектуры Power8. При этом может нарушаться последовательность команд, которая была задана в исходном файле. В результате, программа становится недетерминированной. |
Перейти к основному содержанию
Максимилиано Пан
Опубликовано 11 февраля 2021 г.
+ Подписаться
C — процедурный язык программирования общего назначения, который читается человеком, но не понимает компьютер, для запуска программы, написанной на C (файлы . c), необходимо преобразовать эти файлы в язык низкого уровня что компьютер может понять.
Процесс преобразования исходного кода (написанного на высоком уровне) в машинный код (низкого уровня) называется компиляцией и выполняется специальным программным обеспечением, называемым компилятором, которое проверяет исходный код на наличие синтаксических или структурных ошибок, а также на наличие ошибок в исходном коде. безошибочен, то генерирует объектный код (машинный код).
Процесс компиляции C преобразует исходный код, взятый в качестве входных данных (файл .c), в объектный код (машинный код). Этот процесс можно разделить на четыре этапа:
GCC — это коллекция компиляторов, созданных в рамках проекта GNU, инструмента, который преобразует исходный код различных языков программирования на основе C (таких как C++ или Objective C). ) в машинный код.
gcc <файл. с>
Это базовый состав команды gcc , она берет исходный файл и выполняет весь процесс компиляции от предварительной обработки до компоновки, возвращает исполняемый файл.
gcc -E <файл.c>
С опцией -E компилятор берет исходный файл и выполняет только предварительную обработку (первый шаг процесса), он не компилирует, не собирает и не компонует и возвращает расширенный файл.
gcc -S <файл.с>
С опцией -S компилятор берет исходный файл и выполняет первые два шага (предварительную обработку и компиляцию), не ассемблирует и не компонует и возвращает файл на ассемблере.
gcc -c <файл.c>
С опцией -c компилятор берет исходный файл и выполняет первые шаги дерева (предварительная обработка, компиляция и сборка), не компонует и возвращает файл в объектном коде.
Чтобы узнать больше о команде gcc и ее параметрах, посетите gcc man.
Программирование. Способность воплощать идеи в реальность — не что иное, как сверхспособность. Языки программирования могут варьироваться от простых до сложных и от низкоуровневых до высокоуровневых. Однако компиляция написанного кода является обычным процессом для большинства языков высокого уровня.
Одним из наиболее широко используемых языков программирования во всем мире является язык C. Это машинно-независимый язык, представленный еще в 1972 году. С момента своего появления C использовался для написания всего, от сложных игр и приложений до полнофункциональных операционных систем, таких как Microsoft Windows.
Однако без компилятора языка «C», высокоуровневый код, написанный разработчиками для создания этих продуктов, не мог быть собран в машинный код. Так что можно с уверенностью сказать, что эти продукты не существовали бы без компиляции! Прежде чем мы углубимся в процесс компиляции для C, давайте подробно разберемся в этом термине.
Что означает компиляция?Большая часть программирования или «кодирования» выполняется на языках, которые обычно имитируют тот или иной естественный язык мира, чаще всего – английский.
Их также называют языками программирования высокого уровня . Однако эти языки непонятны компьютерам, поскольку они понимают только язык битов, единиц и нулей, иначе известный как ассемблер или машинный язык.
Так что за волшебство превращает наш человеческий код в машинный язык? Вот где появляется компилятор! Большинство языков программирования имеют встроенные компиляторы. Они проверяют написанный код на наличие синтаксических, логических или структурных ошибок и преобразуют его в машинный язык, только если код равен 9.0097 без ошибок . Этот процесс называется Компиляция .
Процесс компиляции состоит из четырех основных этапов:
Давайте рассмотрим каждый из них по порядку.
1. Предварительная обработкаКод, который пишет человек, называется исходным кодом . Файл исходного кода сохранен с расширением «.c». На первом этапе компиляции исходный код поступает на препроцессор, который выполняет над ним три основные функции:
Одна из лучших практик кодирования для разработчиков — добавлять комментариев в свой код, чтобы его было легко понять другим программистам. Хотя эти комментарии полезны для людей, они не понятны машинам.
На первом этапе препроцессор берет файл исходного кода в качестве входных данных и очищает код, что просто означает удаление всех ненужных элементов, таких как комментарии.
Это делает код легко расшифровываемым машинами.Следующим действием препроцессора является передача директив препроцессора. Это просто строки кода в файле исходного кода, которые начинаются с символа «#». Вот некоторые примеры директив препроцессора:
Препроцессор интерпретирует директивы и предпринимает соответствующие действия. Например, если в программе встречается директива #include
Наконец, препроцессор расширяет код в файле исходного кода, и этот расширенный код затем передается компилятору.
Если вы хотите понять разницу между компилятором и интерпретатором, щелкните здесь.
2. КомпиляцияКак следует из названия, компилятор компилирует расширенный код, отправленный препроцессором, на язык ассемблера. Этот язык специфичен для целевого процессора и также удобочитаем.
3. АссемблированиеАссемблер преобразует скомпилированный код в чистый двоичный код или ассемблерный код (единицы и нули). Файл, который создает ассемблер, называется объектным файлом.
Он имеет то же имя файла, что и исходный файл, но имеет расширение «.obj» в DOS и «.o» в UNIX. Например, если исходный файл называется «Hello World.c» , то объектный файл будет называться «Hello World.obj» .
Хотите узнать, что нужно, чтобы пройти путь от ученика до инженера-программиста, прочитайте здесь вдохновляющее путешествие Балджита.
4. СвязываниеЯзык программирования «C» имеет библиотеку предварительно скомпилированных функций. Все программы, написанные на языке C, используют одну или несколько из этих библиотечных функций. Собранный код этих файлов библиотеки хранится с расширением ‘.lib’ (или ‘.a’) .
В процессе компоновки компиляции ассемблерный код исходного файла комбинируется с ассемблерным кодом используемых библиотечных файлов для беспрепятственного выполнения программы.
В некоторых случаях, когда программа использует несколько исходных файлов, один может вызывать функцию внутри другого. В таких случаях этап связывания становится наиболее важным этапом компиляции, поскольку он связывает ассемблерный код обоих файлов.
Полученный файл является полностью скомпилированным и готовым к выполнению. Он всегда имеет то же имя файла, что и исходный файл, но может иметь расширение «.exe» в DOS или «a.out» в UNIX.
Давайте посмотрим на компиляцию в действии на примере простой программы, использующей директиву препроцессора и функцию printf.
#include
int main()
{
PRINTF ( «Hello CodeQuotient» )
Возврат 0;
}
Чтобы лучше понять, вот схема компиляции этой программы: Код файла > Сборка > Объектный файл ( Hello CodeQuotient.