Мой путь изучения C начался с бестселлера «Брайан Керниган, Деннис Ритчи, Язык программирования C, 2-е издание». Там рассказывается как скомпилировать программу в операционной системе Unix, но этот способ не работает в Linux. Авторы книги выкрутились, написав следующее:
В других системах это процедура будет отличаться. Обратитесь к справочнику или специалисту за подробностями.
Побуду специалистом :) и расскажу в данной статье, как скомпилировать первые программы на C и заодно на C++ в терминале Ubuntu.
Текстовый редактор gedit
Для написания первых программ подойдет обычный, используемый по умолчанию в Ubuntu, текстовый редактор с подсветкой синтаксиса — gedit.
![]() |
Рис. 1. Запуск текстового редактора. |
Первой программой по традиции является «Hello, World!», выводящее приветствие на экран:
#include <stdio.h>
int main(int argc, char **argv)
{
puts("Hello, world!");
return 0;
}
Печатаем или копируем текст программы в gedit и сохраняем в файл
Hello.c
, например, на рабочий стол. Не самое лучше место для сохранения, но это позволит рассмотреть случай, когда в имени директории содержится пробел.![]() |
Рис. 2. Программа hello, World. |
Компиляция программы на C
Теперь запускаем терминал, можно через Dash, а можно с помощью горячих клавиш <ctrl> + <Alt> + <T> . Здесь в начале установим инструменты сборки, куда входят необходимые компиляторы
gcc
для языка C и g++
для языка C++:sudo apt install build-essential
Для установки требуется ввести пароль, при вводе которого может сложиться впечатление, что ничего не происходит, но на самом деле терминал просто в целях безопасности не отображает символы.
Далее в терминале нам необходимо перейти в директорию, куда сохранили файл с текстом программы. Перемещение выполняется командой
cd
(англ. change directory — изменить каталог). Чтобы воспользоваться командой в начале пишется cd
, затем через пробел путь
, куда нужно перейти.Для перехода на рабочий стол, команда будет следующей:
cd ~/Рабочий\ стол
Обратите внимание на символ обратной косой черты
\
в имени директории Рабочий стол
. Обратная косая экранирует пробел, и сообщает команде cd
, что пробел и следующие за ним символы являются частью имени. Символ ~
в начале пути обозначает путь до домашней папки пользователя.Для просмотра содержимого директории применяется команда
ls
(сокращение от англ. list).![]() |
Рис. 3. Работа в терминале. |
Команда компиляции для программы на C выглядит следующим образом:
gcc -Wall -o hello hello.c
где:
gcc
— компилятор для языка программирования C;-Wall
— ключ вывода всех предупреждений компилятора;-o hello
— с помощью ключа-o
указывается имя выходного файла;hello.c
— имя нашего исходного файла, который компилируем.
Выполнив команду
ls
, увидим, что появилась наша скомпилированная программа hello
, отмеченная цветом, обозначающим исполняемые программы.В завершение запустим
hello
, вводом имени программы с префиксом ./
:./hello
Префикс
./
сообщает терминалу о необходимости выполнить программу с заданным именем в текущем каталоге. (Точка — это условное название текущего каталога.)![]() |
Рис. 4. Работа в терминале, продолжение. |
Компиляция программы на С++
Программы на C++ компилируются аналогично, как и программы на C. «Hello, World!» на C++ можно написать так:
#include <iostream>
int main(int argc, char **argv)
{
std::cout << "Hello, World!" << std::endl;
return 0;
}
Сохраняем текст программы в файл под именем
hello2.cpp
. Таким образом, команда компилирования будет иметь вид:g++ -Wall -o hello2 hello2.cpp
Для запуска результата вводим в терминале:
./hello2
Заключение
Данный способ позволяет скомпилировать программу лишь из одного файла с исходным кодом. Но этого вполне достаточно, чтобы начать изучение языков программирования C/C++ по книгам или по статьям в интернете.
Более подробно об программировании в Ubuntu или в любом другом дистрибутиве Linux можно прочитать в книгах:
- Иванов Н. Н. — Программирование в Linux. Самоучитель. — 2-е издание;
- Нейл Метьэ, Ричард Стоунс — Основы программирования в Linux: Пер. с англ. — 4-е издание;
- Колисниченко Д. Н. — Разработка Linux-приложений.