Как начать писать программный код Си в ОС Linux (Руководство для совсем начинающих)

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Введение

Добрый день. Этот материал рассчитан на людей, будущих программистов, которые только начинают разбираться в программировании под ОС Linux. Я попробую здесь показать прямое руководство к действию на примере тех простых инструментов, которые использовал некогда сам при изучении Си в процессе знакомства с Linux. На самом деле, с теми или иными поправками, это руководство можно использовать в большинстве дистрибутивов. Руководство однозначно подходит для всех deb-based дистрибутивов.

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

Итак: у Вас сейчас установлен дистрибутив ОС, как говорится, "из коробки". Перед глазами пособие для разработчика/учебник/просто_хорошая_книга по "Языку программирования Си". И никакой вменяемой, полноценной подробной информации о том, как же собственно откомпилировать и выполнить, написанный в книге, исходный код. Быстрый осмотр тематических ресурсов уже показал Вам, что, необходимо установить компилятор Си, запустить его с нужными параметрами и потом запустить компилированный бинарный код. Примерно с этого момента мы и начнём.

Установка компилятора

Я имею ввиду, что Вы скорее всего (бывший) пользователь ОС Windows и действия в чёрном/синем окошке при помощи клавиатуры оканчивались где-то на команде ping, кажутся неким таинством. Однако отмечу, что всё банально просто и текстовой интерфейс предоставляет намного более гибкие возможности (скорее всего Вы неоднократно Вы слышали это ранее). Приступим:

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

На этом этапе всё будет очень быстро и просто. Открываем терминал и пишем:

sudo apt install gcc

(На всякий случай: вставка в gnome-terminal ctrl+shift+v)

Сразу поясню, что текст слева от курсора - это приглашение командного интерпретатора и оно выглядит следующим образом:

ИМЯ_ПОЛЬЗОВАТЕЛЯ@ИМЯ_КОМПЬЮТЕРА:ТЕКУЩИЙ_КАТАЛОГ$

Далее я буду указывать только команды интерпретатору без приглашения.

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

Система попросит Вас ввести пароль суперпользователя и приступит к установке компилятора.

Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Предлагаемые пакеты:
  gcc-multilib gcc-doc
Следующие НОВЫЕ пакеты будут установлены:
  gcc
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 44 пакетов не обновлено.
Необходимо скачать 5 208 B архивов.
После данной операции объём занятого дискового пространства возрастёт на 51,2 kB.
Пол:1 http://ru.archive.ubuntu.com/ubuntu focal/main amd64 gcc amd64 4:9.3.0-1ubuntu2 [5 208 B]
Получено 5 208 B за 0с (34,6 kB/s)  
Выбор ранее не выбранного пакета gcc.
(Чтение базы данных … на данный момент установлено 371769 файлов и каталогов.)
Подготовка к распаковке …/gcc_4%3a9.3.0-1ubuntu2_amd64.deb …
Распаковывается gcc (4:9.3.0-1ubuntu2) …
Настраивается пакет gcc (4:9.3.0-1ubuntu2) …
Обрабатываются триггеры для man-db (2.9.1-1) …

Если же он уже установлен, то менеджер пакетов apt просто укажет на это примерно следующим образом:

Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Уже установлен пакет gcc самой новой версии (4:9.3.0-1ubuntu2).

Установка редактора

Обычно с дистрибутивом Ubuntu поставляется весьма интересный текстовой редактор gedit. Однако в других дистрибутивах возможно придётся установить этот редактор:

sudo apt install gedit

Создание файла с исходным кодом

Теперь пришло то самое время нашего классического "hello world"! Давайте сделаем это в стиле linux. Просто наберите в консоли:

gedit ~/hello_world.c

Более подробно Вы обязательно прочитайте в профильных ресурсах и в документации, я только отмечу, что символ "тильда" возвращает полный путь к домашнему каталогу пользователя ОС. Соответственно будет создан файл в вашем домашнем каталоге с указанным именем.

И далее наш программный код на языке Си в редакторе:

#include "stdio.h"
int main()
{
	printf ("\nHello world)\n");
	for (int c=0; c<10;c++)
	{
		for (int i =0;i<c;i++) 
			printf("#");
		printf ("\n");
	}
	return 0;
}

(Стоит отметить, что в редакторе gedit есть подсветка синтаксиса для различных языков программирования. Переключить режимы подсветки можно в нижней части окна редактора.)

Не забываем сохранить изменения нажатием ctrl+s. Обратите внимание, что вопросов об имени файла не последовало, так как имя было уже указано параметром при запуске редактора из командной строки терминала.

Компиляция и запуск

Закрываем окно редактора нажатием Alt+F4 и запустим же то сокровенное ради чего все тут и собрались:

gcc ./hello_world.c

И в ответ только новое приглашение. В отличие от стиля в ОС Windows, когда консоль, жутко подробно по-умолчанию, комментирует выполняемые действия - большинство программ в ОС семейства *nix сообщают только об исключительных ситуациях, ошибках и тому подобных вещах. То есть если "в ответ тишина" - то всё прошло хорошо.

Теперь в домашнем каталоге у нас появился файл a.out - он и есть файл с исполнимым кодом.

Для запуска этого файла на исполнение - назначим ему атрибут: "исполнимый":

chmod +x a.out

и теперь запустим получившееся приложение:

./a.out

(Для запуска исполнимого файла интерпретатору требуется указать полный путь к файлу. Как в случае с "тильдой" символ "точка" возвращает полный путь к текущему каталогу. В данном конкретном случае правомерно так же запустить через ~/a.out Это не имеет значения здесь, так как файл создан в домашнем каталоге пользователя.)

И мы получаем вывод в терминале:

Hello world)

#
##
###
####
#####
######
#######
########
#########

Для выполнения всех повторных действий: изменение кода и снова компиляция, - Вы можете не вводить все эти команды каждый раз заново, а использовать стрелки вверх и вниз, для быстрого выбора команд из истории. И, кстати, вывод списка истории всех введённых команд можно выполнить командой (на самом деле программой) history.

Минутка автоматизации

Теперь приступим к очень интересному моменту связанному с творчеством в духе *nix. Каждый раз вводить много скучных команд неинтересно, возможно, даже вредно. Мы расширим функционал редактора gedit и доработаем его "напильником" до состояния примитивной среды разработки: запустим gedit и откроем меню параметров,

Главное меню gedit
Главное меню gedit

где на вкладке "Расширения" добавляем "Внешние инструменты"

"Настройки" - "Расширения"
"Настройки" - "Расширения"

И затем, из того же главного меню gedit выбираем "Управление внешними инструментами".

"Управление внешними инструментами"
"Управление внешними инструментами"

Как Вы уже поняли - здесь можно выполнить доработку функциональности текстового редактора. Создадим новый инструмент: "Компиляция и запуск", В качестве вывода используем нижнюю область редактора. Инструмент назначим для файлов C и C++. Назначим клавишу F5 (дело вкуса) на применение инструмента и собственно сам код инструмента в виде скрипта bash:

#!/bin/bash
gcc -o a.out $GEDIT_CURRENT_DOCUMENT_NAME
chmod +x ./a.out
./a.out
rm ./a.out

Разберёмся в том, что тут происходит:

#!/bin/bash - указание командного интерпретатора для выполнения скрипта.

gcc -o a.out $GEDIT_CURRENT_DOCUMENT_NAME - здесь мы запускаем компилятор, где в параметре -o указываем имя выходного файла. Пускай он будет таким же как и по-умолчанию.

$GEDIT_CURRENT_DOCUMENT_NAME - через эту переменную gedit передаёт имя файла.

Дальше Вы уже знаете - назначение атрибута "исполнения", запуск файла и потом:

rm ./a.out - удаление созданного исполнимого файла.

Попробуем инструмент в деле:

Теперь можно продолжать изучать пособие для разработчика/учебник/просто_хорошую_книгу по "Языку программирования Си" на практике.

Заключение

На самом деле в ОС Linux полно возможностей по доработке и использованию различного ПО. Само ПО является максимально гибким. Необязательно использовать предложенные мною средства, скорее методы, разработки.

В дальнейшем Вам обязательно понадобятся более серьёзные средства. А на первое время Вы можете дополнительно посмотреть другие редакторы, вплоть до больших и серьёзных сред разработки. Однако обязательно обратите внимание на редактор vim.

Источник: https://habr.com/ru/post/657209/


Интересные статьи

Интересные статьи

Неизбежные изменения, которые произошли с DevOps с началом пандемии, стали поводом для обсуждений специалистами новых стандартов и требований в этой профессиональной сфере. Естественно, *instinctools ...
История сегодня пойдёт про автосервис в Москве и его продвижении в течении 8 месяцев. Первое знакомство было ещё пару лет назад при странных обстоятельствах. Пришёл автосервис за заявками,...
Однажды мой знакомый, который на тот момент администрировал некое веб-приложение на сервере под управлением GNU\Linux, пожаловался на одного вредного администратора сервера. Тот ни в какую не хот...
В статье описаны необходимые параметры сервера для оптимальной работы сайта на платформе 1С-Битрикс.
Загорелся желанием поставить себе на десктопную версию Slack тёмную тему, т.к. много времени провожу в нём в тёмное время суток и хочется комфортно работать в однородной тёмной среде. Так ка...