Язык Си в примерах/Компиляция программ
Программа на языке Си — один или несколько текстовых файлов, которые также называются исходными.
Исполнить исходные файлы нельзя, их необходимо скомпилировать, т.е. создать исполняемый файл, содержащий в себе инструкции процессора и пригодный для запуска на компьютере.
Процесс преобразования исходных файлов в исполняемый называется компиляцией. Если ваша программа состоит из одного исходного файла hello.c , то для его компиляции компилятором GNU С достаточно выполнить команду:
bash$ gcc hello.c -o hello
Если не получается или будете создавать папку для проекта, то разместите её поближе к корневой пользователя /home/username/folder/hello.c и запустите команду:
[username@localhost ~]$ gcc ~/development/hello.c -o hello
В результате получится файл hello , имя которого мы указали в опции -o . Этот файл является исполняемым и его можно запускать (execute) при помощи команды:
bash$ ./hello
Пара символов ./ перед hello означает «искать исполняемый файл hello в текущей директории».
bash$ gcc xxx.c yyy.c -o zzz -I./common -I.. -lm
соответствует команде: «скомпилировать файлы xxx.c yyy.c в программу zzz; заголовочные файлы находятся в директориях ./common и ..; подключить библиотеку libm»
Библиотека libm (подключаемая с помощью опции -lm ) содержит откомпилированные математические функции, которые объявляются в заголовочном файле math.h . Если вы используете функции из этой библиотеки (такие как log , sin , cos , exp ), то не забывайте подключать её при компиляции.
Подробную информацию об опциях компилятора gcc можно получить, если набрать
bash$ man gcc
bash$ info gcc
Ссылки [ править ]
- http://digteh.ru/MCS51/C51/c51.php — Язык программирования СИ для микроконтроллеров
- http://www.christian-heffner.de — Бесплатная среда разработки для windows со встроенным компилятором
Как скомпилировать c в командной строке
Рассмотрим создание первой простейшей программы на языке Си с помощью компилятора GCC , который на сегодняшний день является одим из наиболее популярных компиляторов для Cи и который доступен для разных платформ. Более подобному информацию о GCC можно получить на официальном сайте проекта https://gcc.gnu.org/.
Набор компиляторов GCC распространяется в различных версиях. Для Windows одной из наиболее популярных версий является пакет средств для разработки от некоммерческого проекта MSYS2 . Следует отметить, что для MSYS2 требуется 64-битная версия Windows 7 и выше (то есть Vista, XP и более ранние версии не подходят)
Итак, загрузим программу установки MSYS2 с официального сайта MSYS2:

После загрузки запустим программу установки:

На первом шаге установки будет предложено установить каталог для установки. По умолчанию это каталог C:\msys64:

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

После завершения установки запустится консольное приложение MSYS2.exe. Если по каким-то причинам оно не запустилось, то в папке установки C:/msys64 надо найти файл usrt_64.exe :

Теперь нам надо установить собственно набор компиляторов GCC. Для этого введем в этом приложении следующую команду:
pacman -S mingw-w64-ucrt-x86_64-gcc
Для управления пакетами MSYS2 использует пакетный менеджер Packman. И данная команда говорит пакетному менелжеру packman установить пакет mingw-w64-ucrt-x86_64-gcc , который представляет набор компиляторов GCC (название устанавливаемого пакета указывается после параметра -S ).

и после завершения установки мы можем приступать к программированию на языке Си. Если мы откроем каталог установки и зайдем в нем в папку C:\msys64\ucrt64\bin , то найдем там все необходимые файлы компиляторов:

В частности, файл gcc.exe как раз и будет представлять компилятор для языка Си.
Далее для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды. Для этого можно в окне поиска в Windows ввести «изменение переменных среды текущего пользователя»:

Нам откроется окно Переменныех среды:

И добавим путь к компилятору C:\msys64\ucrt64\bin :

Чтобы убедиться, что набор компиляторов GCC успешно установлен, введем следующую команду:
gcc --version
В этом случае нам должна отобразиться версия компиляторов

Создание первой программы
Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода. Можно взять распространенный редактор Visual Studio Code или даже обычный встроенный Блокнот.
Итак, создадим на жестком диске папку для исходных файлов. А в этой папке создадим новый файл, который назовем hello.c .

В моем случае файл hello.c находится в папке C:\c.
Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:
#include // подключаем заголовочный файл stdio.h int main(void) // определяем функцию main < // начало функции printf("Hello METANIT.COM!\n"); // выводим строку на консоль return 0; // выходим из функции >// конец функции
Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка
#include
Директива include подключает заголовочный файл stdio.h, который содержит определение функции printf, которая нужна для вывода строки на консоль.
Далее идет определение функции int main(void) . Функция main должна присутствовать в любой программе на Си, с нее собственно и начинается выполнение приложения.
Ключевое слово int в определении функции int main(void) говорит о том, что функция возвращает целое число. А слово void в скобках указывает, что функция не принимает параметров.
Тело функции main заключено в фигурные скобки <>. В теле функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello METANIT.COM!».
В конце осуществляем выход из функции с помощью оператора return . Так как функция должна возвращать целое число, то после return указывается число 0. Ноль используется в качестве индикатора успешного завершения программы.
После каждого действия в функции ставятся точка с запятой.

Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:
cd C:\c
Чтобы скомпилировать исходный код, необходимо компилятору gcc передать в качестве параметра файл hello.c:
gcc hello.c
После этого будет скомпилирован исполняемый файл, который в Windows по умолчанию называется a.exe . И мы можем обратиться к этому файлу
a.exe
и в этом случае консоль выведет строку «Hello METANIT.COM!», собственно как и прописано в коде.
Стоит отметить, что мы можем переопределить имя компилируемого файла с помощью флага -o и передав ему имя файла, в который будет компилироваться программа. Например:
gcc hello.c -o hello.exe
В этом случае программа будет компилироваться в файл hello.exe , который мы также запустить.

Чтобы не приходилось вводить две команды: одну для компиляции программы и другую для ее запуска, мы можем объединить команды:
gcc hello.c -o hello.exe & hello
Эта команда сначала компилирует код в файл hello.exe, а потом сразу запускает его.
Компилятор g++: запуск и использование

Компилятор g++ распространяется по лицензии GNU, Фондом свободного программного обеспечения (FSF), для nix-подобных ОС и является C++ компилятором, который управляется с помощью командной строки. g++ распространяется с nix системами, так что если вы работаете в ОС Unix или Linux, скорее всего в вашей системе уже установлен g++.
Чтобы запустить исходный код, с помощью компилятора g++, просто введите в терминале (командной строке) следующую команду:
g++ filename
После того, как исходный файл будет скомпилирован в исполняемый, на выходе мы получим файл с именем a и расширением .out — a.out .
Перед запуском g++ можно указать в командной строке имя исполняемого файла, который получим на выходе. Для этого необходимо указать параметр -o и присвоить нужное имя файла.
-o outputfile
Полностью команда будет выглядеть так:
g++ filename -o outputfile
Чтобы g++ показывал предупреждения об ошибках, а также поддерживал существующие стандарты языка C++, рекомендую использовать флаги:
Если вы хотите, чтобы компилятор рассматривал предупреждения как ошибки, — используйте флаг -Werror . И если появится хотя-бы одно предупреждение, то вы даже не получите исполняемый файл. Таким образом, вы точно будете знать, что не пропустили ни одной ошибки.
Если вы хотите, отлаживать исполняемый файл в отладчике GDB, включайте в команду флаг -g .
g++ filename -g -o outputfile
Это позволит отладчику GDB, дать вам подробную информацию о процессе отладки, в том числе дополнительный код в исполняемый файл.
Если вы используете *nix-подобные системы, вы также можете проверить другие опции компилятора g++, введя в командную строку следующую команду:
Создание разделяемых библиотек
Если вы хотите узнать, как создать общую библиотеку на Linux с gсс, прочитайте статью — как создать общую библиотеку на Linux с помощью gcc.
Компиляция и запуск программы из консоли [закрыт]
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.
Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.
Закрыт 7 лет назад .
Хочу собрать программу из исходного файла на си. Для этого выполняю в консоле
bash$ gcc hello.c -o hello
'bash$' is not recognized as an internal or external command.