В этом документе мы увидим, как мы можем скомпилировать и выполнить программу на C в Linux и Windows. Документ также содержит список доступных компиляторов Си.
Компилятор gcc для программирования на языке Си: запуск кода
Компилятор gcc распространяется по лицензии GNU, Фондом свободного программного обеспечения, для nix-подобных ОС и является CC++ компилятором, который управляется с помощью командной строки. gcc распространяется с nix системами, так что если вы работаете в ОС Unix или Linux, скорее всего в вашей системе уже установлен gcc.
Чтобы запустить исходный код, с помощью компилятора gcc, просто введите в терминале (командной строке) следующую команду:
gcc filename
После того, как исходный файл будет скомпилирован в исполняемый, на выходе мы получим файл с именем a и расширением *.out — a.out , который можно будет запустить с помощью команды
Перед запуском gcc можно указать в командной строке имя исполняемого файла, который получим на выходе. Для этого необходимо установить параметр -o и присвоить нужное имя файла.
TCC_00_02 Компиляция программы на языке Си из командной строки. Переменная окружения path в cmd
-o outputfile
Полностью команда будет выглядеть так:
gcc filename -o outputfile
Опять же, вы можете запустить программу с помощью команды ./outputfile . (Точка и слэш ./ перед именем файла используются для указания текущего каталога.)
Чтобы отображались все предупреждения, необходимо использовать флаг:
Чтобы быть уверенными, что компилятор действительно поддерживает стандарты ANSI, используем флаг:
Если вы хотите, чтобы компилятор рассматривал предупреждения как ошибки, используйте флаг -Werror . В таком случае, если возникнет хотя бы одно предупреждение, вы не получите исполняемый файл.
Если вы хотите, отлаживать исполняемый файл в отладчике GDB, включайте в команду флаг -g .
gcc filename -g -o outputfile
Это позволит отладчику GDB, дать вам подробную информацию о процессе отладки, в том числе дополнительный код в исполняемый файл.
Математическая библиотека
Если вам нужно использовать функции из математической библиотеки (как правило, функции из заголовочного файла math.h , таких как sin или sqrt ), необходимо явно указать этот файл. Чтобы привязать библиотеку используется флаг -l , после указывается флаг библиотеки m :
gcc filename -o outputfile -lm
Обратите внимание, что в C++ не надо использовать этот флаг.
Если вы используете *nix-подобные системы, вы также можете проверить другие опции компилятора gcc, введя в командную строку следующую команду:
руководство (на английском) к компилятору gcc, или
руководство (на русском) к компилятору gcc.
Создание разделяемых библиотек
Если вы хотите узнать, как создать разделяемую библиотеку в Linux с gcc, прочитайте статью: как создать разделяемую библиотеку на Linux с помощью gcc.
Источник: cppstudio.com
Урок 1: Компиляция и запуск простейшей программы на языке Си.
Первая программа на Си
Текст программы, написанный на каком-то языке программирования, например на С, называется исходным кодом. Исходный код пишется в текстовом редакторе и сохраняется с нужным расширением.Обычно файлы, написанные на языке С, имеют расширение.c.
Для запуска программы на языке С сначала необходимо перевести ее из текстовой формы, понятной человеку, в форму, понятную машине.
Последовательность символов, понятная машине, называется машинным или исполняемым кодом. Например, файл с расширением.exe представляет собой исполняемый код.
Программа, которая осуществляет перевод из исходного в исполняемый код, называется компилятором.
Первая программа на Си
Единственный способ выучить новый язык программирования — это писать на нем программы. При изучении любого языка первой, как правило, предлагают написать приблизительно следующую программу:
Напечатать слова Hello, world!
Си-программа, печатающая «Здравствуй, мир!», выглядит так:
printf («Hello, world!n»);
Программа на Си, каких бы размеров она ни была, состоит из функций и переменных. Функции содержат инструкции, описывающие вычисления, которые необходимо выполнить, а переменные хранят значения, используемые в процессе этих вычислений. Функции в Си похожи на подпрограммы и функции Фортрана или на процедуры и функции Паскаля. Приведенная программа — это функция с именем main. Обычно вы вольны придумывать любые имена для своих функций, но «main» — особое имя: любая программа начинает свои вычисления с первой инструкции функции main.
Обычно main для выполнения своей работы пользуется услугами других функций; одни из них пишутся самим программистом, а другие берутся готовыми из имеющихся в его распоряжении библиотек. Первая строка программы:
сообщает компилятору, что он должен включить информацию о стандартной библиотеке ввода-вывода. Эта строка встречается в начале многих исходных файлов Си-программ.
Один из способов передачи данных между функциями состоит в том, что функция при обращении к другой функции передает ей список значений, называемых аргументами. Этот список берется в скобки и помещается после имени функции. В нашем примере main определена как функция, которая не ждет никаких аргументов, что отмечено пустым списком ().
Инструкции функции заключаются в фигурные скобки <>. Функция main содержит только одну инструкцию
printf («Hello, world!n»);
Функция вызывается по имени, после которого, в скобках, указывается список аргументов. Таким образом, приведенная выше строка — это вызов функции printf с аргументом «Hello, world!n». Функция printf — это библиотечная функция, которая в данном случае напечатает последовательность символов, заключенную в двойные кавычки.
В Си комбинация n внутри строки символов обозначает символ новой строки и при печати вызывает переход к левому краю следующей строки. Если вы удалите n (стоит поэкспериментировать), то обнаружите, что, закончив печать, машина не переходит на новую строку. Символ новой строки в текстовый аргумент printf следует включать явным образом. Если вы попробуете выполнить, например,
printf («Hello, world!
компилятор выдаст сообщение об ошибке.
#include | Включение информации о стандартной библиотеке. |
main() | Определение функции с именем main, не получающей никаких аргументов. |
Инструкции main заключаются в фигурные скобки. | |
printf («Hello world!n»); | Функция main вызывает библиотечную функцию printf для печати заданной последовательности символов; n — символ новой строки. |
> |
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru