Как скомпилировать файл в c в dev

Обновлено: 07.07.2024

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

В этом пошаговом руководстве показано, как создать простейшую программу на языке C в стиле "Hello, World" в текстовом редакторе с последующей компиляцией из командной строки. Если вы предпочитаете работать с C++ в командной строке, см. статью Пошаговое руководство. Компиляция собственной программы на языке C++ из командной строки. Если вы хотите попробовать интегрированную среду разработки Visual Studio вместо командной строки, см. статью Пошаговое руководство. Работа с проектами и решениями (C++) или Использование интегрированной среды разработки Visual Studio для разработки приложений для настольных систем на языке C++.

Предварительные требования

Для выполнения этого пошагового руководства необходимо установить Visual Studio и дополнительные компоненты Visual C++ или Build Tools для Visual Studio.

Visual Studio — это эффективная интегрированная среда разработки, которая поддерживает полнофункциональный редактор, диспетчеры ресурсов, отладчики и компиляторы для многих языков и платформ. Сведения об этих компонентах, а также о скачивании и установке Visual Studio, включая бесплатный выпуск Visual Studio Community, см. в этой статье.

При использовании версии Build Tools для Visual Studio устанавливаются только программы командной строки, библиотеки и компиляторы, необходимые для сборки программ на C и C++. Это идеальный вариант для создания заданий и упражнений, а установка выполняется относительно быстро. Чтобы установить только набор программ командной строки, скачайте Build Tools для Visual Studio на странице скачивания Visual Studio, а затем запустите установщик. В установщике Visual Studio выберите рабочую нагрузку Средства сборки C++ и щелкните Установить.

Прежде чем можно будет выполнить сборку программы C или C++ в командной строке, необходимо убедиться в том, что эти средства установлены и к ним можно получить доступ из командной строки. Visual C++ имеет сложные требования к среде командной строки для поиска используемых средств, заголовков и библиотек. Visual C++ нельзя использовать в простом окне командной строки без предварительной подготовки. Вам понадобится окно командной строки разработчика, являющееся обычным окном командной строки, в котором заданы все необходимые переменные среды. К счастью, Visual C++ устанавливает ярлыки для запуска командной строки разработчика, для которой настроена среда для сборок из командной строки. К сожалению, имена ярлыков командной строки разработчика и места их расположения отличаются практически во всех версиях Visual C++ и в различных версиях Windows. Первая задача пошагового руководства — найти нужный ярлык.

Ярлык командной строки разработчика автоматически задает правильные пути для компилятора и средств, а также для всех необходимых заголовков и библиотек. Некоторые из этих значений различаются для каждой конфигурации сборки. Если вы не используете ни один из ярлыков, эти значения среды необходимо задать самостоятельно. Дополнительные сведения см. в статье Использование набора инструментов MSVC из командной строки. Так как настраивать среду разработки сложно, настоятельно рекомендуется использовать ярлык командной строки разработчика вместо создания собственного.

Инструкции отличаются в зависимости от используемой версии Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.

Открытие командной строки разработчика в Visual Studio 2022

Если вы установили Visual Studio 2022 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2022 (не приложение Visual Studio 2022). Выберите элемент Командная строка разработчика для VS 2022, чтобы открыть окно командной строки.

Открытие командной строки разработчика в Visual Studio 2019

Если вы установили Visual Studio 2019 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2019 (не приложение Visual Studio 2019). Выберите элемент Командная строка разработчика для VS 2019, чтобы открыть окно командной строки.

Открытие командной строки разработчика в Visual Studio 2017

Если вы установили Visual Studio 2017 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2017 (не приложение Visual Studio 2017). Выберите элемент Командная строка разработчика для VS 2017, чтобы открыть окно командной строки.

Открытие командной строки разработчика в Visual Studio 2015

Если вы установили Microsoft Visual C++ Build Tools 2015 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите Все приложения. Прокрутите вниз и откройте папку Microsoft Visual C++ Build Tools. Выберите элемент Командная строка Native Tools x86 Visual C++ 2015, чтобы открыть окно командной строки.

Если вы используете другую версию Windows, найдите в меню "Пуск" или на начальной странице папку средств Visual Studio, содержащую ярлык командной строки разработчика. Можно также ввести "командная строка разработчика" в строке поиска в Windows и выбрать командную строку, которая соответствует установленной версии Visual Studio. Откройте окно командной строки с помощью ярлыка.

Затем убедитесь в том, что командная строка разработчика Visual C++ настроена правильно. В окне командной строки введите cl и убедитесь в том, что выходные данные выглядят примерно так:

В зависимости от установленной версии Visual C++ и обновлений текущий каталог или номера версий могут отличаться. Если приведенный выше результат похож на отображаемый, можно приступать к сборке программ C или C++ в командной строке.

В зависимости от версии Windows, установленной на компьютере, и конфигурации системы безопасности может потребоваться правой кнопкой мыши открыть контекстное меню для ярлыка командной строки разработчика и выбрать пункт Запуск от имени администратора, чтобы успешно выполнить сборку и запуск программы, созданной в этом пошаговом руководстве.

Создание файла исходного кода на языке C и его компиляция из командной строки

В окне командной строки разработчика введите команду cd c:\ , чтобы изменить текущий рабочий каталог на корень диска C:. Затем введите md c:\hello , чтобы создать каталог, и введите cd c:\hello , чтобы перейти к этому каталогу. В этом каталоге будут находиться исходный файл и скомпилированная программа.

В командной строке разработчика введите команду notepad hello.c . В появившемся диалоговом окне блокнота с оповещением выберите Да, чтобы создать файл hello.c в рабочей папке.

В окне блокнота введите следующие строки кода:

В строке меню блокнота выберите Файл > Сохранить, чтобы сохранить файл hello.c в рабочей папке.

Вернитесь к окну командной строки разработчика. Введите dir в командной строке, чтобы получить список содержимого каталога c:\hello . Вы увидите исходный файл hello.c в списке каталогов, который выглядит примерно так:

Даты и некоторые другие данные будут отличаться на вашем компьютере. Если вы не видите файл исходного кода hello.c , убедитесь в том, что вы открыли созданный каталог c:\hello и сохранили исходный файл в нем в блокноте. Также убедитесь, что исходный код был сохранен с расширением имени файла .c , а не .txt .

Чтобы скомпилировать программу, в командной строке разработчика введите cl hello.c .

Имя исполняемой программы (hello.exe) отображается в информации, выводимой компилятором.

Чтобы запустить программу, в командной строке введите hello .

Программа выводит следующий текст и затем закрывается:

Поздравляем! Вы скомпилировали и запустили программу на C с помощью командной строки.

Следующие шаги

Этот пример Hello, World является самой простой программой C. Реальные программы выполняют полезные действия и имеют файлы заголовков, дополнительные исходные файлы и ссылки на библиотеки.

Вы можете использовать шаги, описанные в этом пошаговом руководстве для C, для создания собственного кода, чтобы не вводить приведенный пример. Вы также можете выполнить сборку различных примеров кода на C, которые можно найти в других местах. Чтобы скомпилировать программу с дополнительными файлами исходного кода, введите их все в командной строке, например:

cl file1.c file2.c file3.c

Компилятор выдает программу с именем file1.exe. Чтобы изменить имя на program1.exe, добавьте параметр компоновщика /out:

cl file1.c file2.c file3.c /link /out:program1.exe

Чтобы автоматически перехватывать другие ошибки программирования, рекомендуется выполнить компиляцию с помощью порога предупреждений /W3 или /W4:

cl /W4 file1.c file2.c file3.c /link /out:program1.exe

Компилятор cl.exe имеет множество других параметров, которые можно применять для создания, оптимизации, отладки и анализа кода. Чтобы просмотреть краткий список, введите cl /? в командной строке разработчика. Можно также выполнять компиляцию и компоновку отдельно и применять параметры компоновщика в более сложных сценариях сборки. Дополнительные сведения о параметрах и использовании компилятора и компоновщика см. в справочнике по сборке для C/C++.

Для настройки и создания более сложных проектов в командной строке можно использовать NMAKE и файлы makefile либо MSBuild и файлы проекта. Дополнительные сведения об использовании этих средств см. в разделах Справочник по NMAKE и MSBuild.

Языки C и C++ похожи, но имеют различия. Компилятор Microsoft C/C++ (MSVC) использует простое правило для определения языка, используемого при компиляции кода. По умолчанию компилятор MSVC рассматривает все файлы с расширением .c как исходные коды на языке С, а файлы с расширением .cpp как исходные коды на языке С++. Если указан параметр компилятора /TC, компилятор будет рассматривать все файлы как исходные коды на языке С вне зависимости от расширения.

Компилятор MSVC совместим со стандартами ANSI C89 и ISO C99, но не полностью. В большинстве случаев переносимый код на языке C будет компилироваться и выполняться должным образом. Компилятор обеспечивает дополнительную поддержку изменений в ISO C11/C17. Чтобы выполнить компиляцию с поддержкой C11/C17, используйте флаг компилятора /std:c11 или /std:c17 . Для поддержки C11 и C17 требуется Windows SDK 10.0.20201.0 или более поздняя версия. Рекомендуется использовать Windows SDK 10.0.22000.0 или более позднюю версию. Последнюю версию пакета можно скачать на странице Windows SDK. Дополнительные сведения и инструкции по установке и использованию этого пакета SDK для разработки на языке C см. в статье Установка поддержки C11 и C17 в Visual Studio.

Некоторые функции библиотеки и имена функций POSIX являются нерекомендуемыми в компиляторе MSVC. Функции поддерживаются, но предпочтительные имена изменились. Дополнительные сведения см. в статьях Функции безопасности в CRT и Предупреждение компилятора (уровень 3) C4996.

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

Все действия будут производиться на Ubuntu версии 16.04.
Используя компилятор g++ версии:

Состав компилятора g++

Мы не будем вызывать данные компоненты напрямую, так как для того, чтобы работать с C++ кодом, требуются дополнительные библиотеки, позволив все необходимые подгрузки делать основному компоненту компилятора — g++.

Зачем нужно компилировать исходные файлы?

Исходный C++ файл — это всего лишь код, но его невозможно запустить как программу или использовать как библиотеку. Поэтому каждый исходный файл требуется скомпилировать в исполняемый файл, динамическую или статическую библиотеки (данные библиотеки будут рассмотрены в следующей статье).

Этапы компиляции:

Перед тем, как приступать, давайте создадим исходный .cpp файл, с которым и будем работать в дальнейшем.

driver.cpp:

1) Препроцессинг

Самая первая стадия компиляции программы.

Получим препроцессированный код в выходной файл driver.ii (прошедшие через стадию препроцессинга C++ файлы имеют расширение .ii), используя флаг -E, который сообщает компилятору, что компилировать (об этом далее) файл не нужно, а только провести его препроцессинг:

Взглянув на тело функции main в новом сгенерированном файле, можно заметить, что макрос RETURN был заменен:

В новом сгенерированном файле также можно увидеть огромное количество новых строк, это различные библиотеки и хэдер iostream.

2) Компиляция

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

Ассемблерный код — это доступное для понимания человеком представление машинного кода.

Используя флаг -S, который сообщает компилятору остановиться после стадии компиляции, получим ассемблерный код в выходном файле driver.s:

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

3) Ассемблирование

Так как x86 процессоры исполняют команды на бинарном коде, необходимо перевести ассемблерный код в машинный с помощью ассемблера.

Ассемблер преобразовывает ассемблерный код в машинный код, сохраняя его в объектном файле.

Объектный файл — это созданный ассемблером промежуточный файл, хранящий кусок машинного кода. Этот кусок машинного кода, который еще не был связан вместе с другими кусками машинного кода в конечную выполняемую программу, называется объектным кодом.

Далее возможно сохранение данного объектного кода в статические библиотеки для того, чтобы не компилировать данный код снова.

Получим машинный код с помощью ассемблера (as) в выходной объектный файл driver.o:

Но на данном шаге еще ничего не закончено, ведь объектных файлов может быть много и нужно их всех соединить в единый исполняемый файл с помощью компоновщика (линкера). Поэтому мы переходим к следующей стадии.

4) Компоновка

Компоновщик (линкер) связывает все объектные файлы и статические библиотеки в единый исполняемый файл, который мы и сможем запустить в дальнейшем. Для того, чтобы понять как происходит связка, следует рассказать о таблице символов.

Таблица символов — это структура данных, создаваемая самим компилятором и хранящаяся в самих объектных файлах. Таблица символов хранит имена переменных, функций, классов, объектов и т.д., где каждому идентификатору (символу) соотносится его тип, область видимости. Также таблица символов хранит адреса ссылок на данные и процедуры в других объектных файлах.
Именно с помощью таблицы символов и хранящихся в них ссылок линкер будет способен в дальнейшем построить связи между данными среди множества других объектных файлов и создать единый исполняемый файл из них.

Получим исполняемый файл driver:

5) Загрузка

Последний этап, который предстоит пройти нашей программе — вызвать загрузчик для загрузки нашей программы в память. На данной стадии также возможна подгрузка динамических библиотек.

Запустим нашу программу:

Заключение

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

Статьи про ОС Ubuntu. Языки программирования Си и C++.
Инструменты разработки и многое другое.

понедельник, 5 декабря 2016 г.

Как скомпилировать программу на C/C++ в Ubuntu

ubuntu terminal

В других системах это процедура будет отличаться. Обратитесь к справочнику или специалисту за подробностями.

Побуду специалистом :) и расскажу в данной статье, как скомпилировать первые программы на C и заодно на C++ в терминале Ubuntu.

Текстовый редактор gedit


Печатаем или копируем текст программы в gedit и сохраняем в файл Hello.c , например, на рабочий стол. Не самое лучше место для сохранения, но это позволит рассмотреть случай, когда в имени директории содержится пробел.

Программа hello, World!
Рис. 2. Программа hello, World.

Компиляция программы на C

Теперь запускаем терминал, можно через Dash, а можно с помощью горячих клавиш <ctrl> + <Alt> + <T> . Здесь в начале установим инструменты сборки, куда входят необходимые компиляторы gcc для языка C и g++ для языка C++:


Для установки требуется ввести пароль, при вводе которого может сложиться впечатление, что ничего не происходит, но на самом деле терминал просто в целях безопасности не отображает символы.

Для перехода на рабочий стол, команда будет следующей:


Обратите внимание на символ обратной косой черты \ в имени директории Рабочий стол . Обратная косая экранирует пробел, и сообщает команде cd , что пробел и следующие за ним символы являются частью имени. Символ

в начале пути обозначает путь до домашней папки пользователя.

Для просмотра содержимого директории применяется команда ls (сокращение от англ. list).

Работа в терминале
Рис. 3. Работа в терминале.

Команда компиляции для программы на C выглядит следующим образом:

В завершение запустим hello , вводом имени программы с префиксом ./ :

Работа в терминале, продолжение
Рис. 4. Работа в терминале, продолжение.

Компиляция программы на С++


Сохраняем текст программы в файл под именем hello2.cpp . Таким образом, команда компилирования будет иметь вид:


Для запуска результата вводим в терминале:

Заключение

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


После установки необходимых инструментов разработки проверьте их с помощью одной из следующих команд:

Эти команды отобразят путь установки и версию компилятора gcc.


Компиляция и запуск программ на C, C ++ на Linux

Во-первых, давайте посмотрим, как скомпилировать и запустить простую программу, написанную на языке Си.

Напишите свой код / программу в вашем любимом редакторе CLI / GUI.

Я собираюсь написать свою программу на C, используя редактор nano.

Примечание: вам нужно использовать расширение .c для программ на C или .cpp для программ на C ++.

Нажмите Ctrl + O и Ctrl + X, чтобы сохранить и выйти из файла. Если в вашем коде / программе есть какие-либо синтаксические или семантические ошибки, они будут отображены.

Если ошибки нет, компилятор успешно сгенерирует исполняемый файл с именем itisgood в текущем рабочем каталоге.

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

Вы увидите вывод, как показано ниже:

Чтобы скомпилировать несколько исходных файлов (например, source1 и source2) в исполняемый файл, запустите:

Чтобы разрешить предупреждения, отладьте символы в выводе:

Чтобы скомпилировать исходный код в инструкции ассемблера:

Чтобы скомпилировать исходный код без ссылок:

Приведенная выше команда создаст исполняемый файл с именем source.o.

Если ваша программа содержит математические функции:

Для более подробной информации обратитесь к справочным страницам.

Компиляция и запуск программ C ++

Напишите свою программу на C ++ в любом редакторе по вашему выбору и сохраните ее с расширением .cpp.

Вот простая программа на C ++.

Чтобы скомпилировать эту программу C ++ в Linux, просто запустите:

Если ошибок не было, вы можете запустить эту программу C ++ под Linux, используя команду:

Вы увидите вывод, как показано ниже:

В качестве альтернативы, мы можем скомпилировать вышеуказанную программу на C ++, используя команду «make», как показано ниже.

Я не использовал расширение .cpp в приведенной выше команде для компиляции программы.

Нет необходимости использовать расширение для компиляции программ на C ++ с помощью команды make.

Читайте также: