0.1 - настройка окружения

Лабораторная работа 0.1 для студентов курса “Основы программирования” 1 курса кафедры ИУ5 МГТУ им Н.Э. Баумана.

Содержание

  1. Цель работы
  2. Введение
  3. Настройка Linux окружения, WSL
    1. Установка WSL
    2. Базовое устройство файловой системы ОС под WSL (на примере Ubuntu)
  4. Настройка VS Code
    1. Установка VS Code
    2. Базовая настройка под WSL
    3. Установка расширений для работы с C++
  5. Настройка тулчейна C++
  6. Базовые команды для работы с консолью Linux
    1. Полезные ссылки
    2. О консоли
    3. Ориентация в файловой системе
    4. Перемещение по файловой системе
    5. Просмотр содержимого директории
    6. Создание файла
    7. Создание директории
    8. Удаление файлов и директорий
    9. Некоторые советы
  7. Создание простого приложения на C++

Цель работы

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

Введение

В данной лабораторной работе будет рассказано как:

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

Настройка Linux окружения, WSL

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

В Windows 10/11 есть возможность установить специальный слой совместимости, который позволит работать в Linux окружении прямо из оригинальной операционной системы.

Данный слой совместимости называется Windows Subsystem for Linux (WSL).

При желании, вместо WSL можно установить себе какой-нибудь из Linux дистрибутивов второй операционной систем (т.н. дуалбут). В качестве универсального варианта можно использовать Ubuntu 24.04, либо любой другой предпочтительный дистрибутив.

Установка WSL

Для установки WSL следует открыть командную строку Windows или PowerShell от имени администратора. Для этого можно:

  1. Нажать сочетание клавиш Win+R;
  2. Ввести в поле cmd или PowerShell;
  3. Нажать ctrl+shift+enter.

Либо:

  1. Нажать клавишу Win;
  2. Начать вводить cmd или PowerShell;
  3. Нажать правой кнопкой мыши на приложении “Командная строка” (Command Prompt) или “Windows PowerShell”;
  4. Нажать на кнопку “Запуск от имени администратора”.

В появившемся окне следует написать:

wsl --install -d Ubuntu-24.04

Данная команда установит WSL и Ubuntu 24.04 в качестве используемой в WSL операционной системы. При желании можно установить другую операционную систему. Получить список доступных для установки дистрибутивов можно следующей командой (более подробно здесь: https://learn.microsoft.com/en-us/windows/wsl/install):

wsl --list --online

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

Если не возникло никаких ошибок (для этого необходимо прочитать то, что написано в запущенной консоли), то следующим шагом необходимо перезапустить ОС.

После перезагрузки должно автоматически появится окно консоли, в котором начнет отображаться процесс запуска свежеустановленной операционной системы. Если этого не произошло, то можно запустить ОС вручную как обычное приложение, для этого необходимо в поиске найти “Ubuntu 24.04 LTS” и запустить его.

При первом запуске операционная система предложит ввести имя пользователя и пароль. Во время ввода пароля вводимые символы не отображаются. Это стандартное поведение, поэтому нужно просто ввести свой пароль.

После подтверждения пароля вы окажетесь в домашней директории ОС.

В дальнейшем для запуска консоли Linux можно просто открывать соответствующее приложение (для Ubuntu 22.04 это “Ubuntu 22.04 LTS”) или запускать через консоль Windows в случае необходимости.

Базовое устройство файловой системы ОС под WSL (на примере Ubuntu)

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

username@pcname:currentdir$

Где username - это ваше имя пользователя, pcname - имя вашего компьютера, currentdir - та директория, в которой вы сейчас находитесь.

По умолчанию домашняя директория обозначается алиасом (псевдонимом) ~.

Корнем файловой системы в Linux является директория /. В ней находятся директории, необходимые для работы операционной системы. Домашняя директория находится по следующему пути:

/home/username/

Где username - это ваше имя пользователя.

Из-под операционной системы в WSL можно получить доступ к файлам и директориям, расположенными в Windows. Для этого необходимо перейти в директорию /mnt, где можно увидеть смонтированные в эту директорию разделы диска.

Например, чтобы перейти из Ubuntu под WSL на диск с меткой C, нужно перейти по следующему пути:

/mnt/c

В Windows получить доступ к файлам можно через проводник: слева будет раздел с названием Linux, в котором будет имя установленного дистрибутива, который ведет в корень файловой системы установленной ОС. Можно также в адресной строке проводника ввести следующий адрес:

\\wsl.localhost

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

Настройка VS Code

VS Code - это универсальный редактор кода с поддержкой множества пользовательских расширений. Он бесплатный и находится в открытом доступе, поэтому является довольно оптимальным вариантом для работы с C++.

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

Установка VS Code

Установить VS Code можно с официального сайта. Установите его как обычное приложение под Windows (Linux/MacOS) в любое удобное место.

Запустите VS Code. Откройте File -> Preferences -> Settings (ctrl+,). Необходимо будет поставить галочки рядом с тремя настройками.

Названия данных настроек нужно ввести в поисковую строку.

Базовая настройка под WSL

Слева найдите панель управления и нажмите на ней на кнопку расширений (extensions), либо нажмите ctrl+shift+X. В поисковой строке введите WSL. Установите это расширение.

enter image description here

После этого нажмите ctrl+p и введите следующую команду:

> WSL: Connect to WSL

Должно открыться новое окно, подключенное к WSL. Слева снизу должно быть написано WSL: Ubuntu-24.04.

Откройте терминал внутри VS Code (ctrl+`). Должна открыться консоль Ubuntu (или другой установленной ОС) с расположением в домашней директории ОС. Чтобы убедиться, что вы точно находитесь под Linux, введите следующую команду.

lsb_release -a

Убедитесь, что вывод соответствует следующему:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04 LTS
Release:        24.04
Codename:       noble

Установка расширений для работы с C++

В целом, можно работать и без расширений, но они помогут вам упростить разработку и написание кода на C++

Откройте панель расширений (ctrl+X). Найдите и установите следующие расширения:

enter image description here

Подробнее про каждое расширение можно прочитать на странице его описания.

Настройка тулчейна C++

Откройте консоль установленного дистрибутива Linux (отдельно или в VS Code) и введите следующую команду:

sudo apt update

Введите запрашиваемый пароль, который указывали при установке системы. Дождитесь выполнения, затем введите:

sudo apt install build-essential

Подтвердите выполнение, написав в консоли “y” (без кавычек) и нажав enter. Данная команда установит базовый набор программ и библиотек, необходимых для написания программ на C++. В частности, будет установлен компилятор GCC.

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

Проверьте, что GCC установился успешно:

gcc --version

В ответ вы должны получить следующий вывод:

gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

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

sudo apt install gdb

Убедитесь, что gdb успешно установлен:

gdb --version

В ответ вы должны получить следующий вывод:

GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Далее необходимо поставить форматтер clang-format и статический анализатор clang-tidy.

Для этого сначала необходимо добавить подпись для соответствующего репозитория с инструментарием LLVM (более подробно здесь - https://apt.llvm.org/):

wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -

Затем добавить сам репозиторий:

sudo add-apt-repository deb http://apt.llvm.org/noble/ llvm-toolchain-noble-18 main

Затем снова запустить следующую команду:

sudo apt update

Затем:

sudo apt upgrade

Наконец, установите непосредственно clang-format:

sudo apt install clang-format

И clang-tidy:

sudo apt install clang-tidy

Убедитесь, что clang-format и clang-tidy успешно установлены, запустив их с флагами --version (должна быть версия 18 или выше).

Базовые команды для работы с консолью Linux

Полезные ссылки

Гайды для работы с консолью в Linux:

О консоли

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

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

Как правило, команды и консольные приложения принимают аргументы и флаги. Для большинства распространенных команд и приложений существует флаг –help, он позволяет получить справку о том как работать с этой командой/приложением.

someapp --help

Ориентация в файловой системе

Как уже было сказано, посмотреть в какой конкретно директории вы сейчас находитесь можно в активной строке консоли (слева от знака “$”.

Также текущее местоположение можно узнать следующей командой:

pwd

Перемещение по файловой системе

Перемещение по файловой системе осуществляется с помощью команды cd. Данная команда работает как с относительными, так и с абсолютными путями.

Абсолютный путь - это такой путь, который начинается от корня файловой системы:

/home/username

Относительный путь - путь относительно той директории, в которой вы сейчас находитесь:

Чтобы переместиться внутрь директории по относительному пути, достаточно просто указать часть пути относительно текущей директории. Например, если текущая директория - ~ (домашняя) и в ней есть директория examples, то достаточно написать следующую команду:

cd examples

Чтобы переместиться на уровень выше относительно текущий директории, используется “..”. Например, если текущая директория /home/username/examples, то чтобы перейти на уровень выше надо написать следующую команду:

cd ..

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

cd ../../..

Просмотр содержимого директории

Для просмотра содержимого текущей директории используется команда ls. Она выводит список всех нескрытых файлов и директорий, находящихся в текущей директории.

Скрытые файл или директория в Linux - это любой файл или директория, название которых начинается с “.”. Например, .data.txt или .somedir.

Чтобы показать содержимое директории вместо со скрытыми файлами, нужно использовать флаг -a:

ls -a

Создание файла

Один из способов создания нового файла - это команда touch. Она создаст файл с заданным названием в текущей директории. Например, данная команда создаст файл file.txt:

touch file.txt

Создание директории

Создать директорию можно с помощью команды mkdir. Ей можно указать либо абсолютный, либо относительный путь. Например, данная команда создаст директорию d в текущей директории:

mkdir d

Чтобы создавать вложенные директории, необходимо использовать флаг -p. Следующая команда создаст в текущей директории директорию a, в которой создаст директорию b:

mkdir -p a/b

Удаление файлов и директорий

Чтобы удалить файл или директорию используется команда rm. Данная команда удалит файл file.txt в текущей директории:

rm file.txt

Для удаления директории необходимо использовать флаг -r. Вместе с директорией удалится все ее содержимое. Например, эта команда удалит директорию dir из текущей директории:

rm -r dir

Некоторые советы

Создание простого приложения на C++

Откройте VS Code. В терминале с помощью команды mkdir создайте какую-нибудь директорию, в которой будете писать код (с любым названием).

Нажмите на панели управления или в меню File, или через последовательное нажатие ctrl+K ctrl+O пункт “Открыть папку” (Open Folder). Укажите полный (абсолютный) путь к той папке, которую вы создали. В появившемся контекстном окне выберите “Да, я доверяю авторам” (Yes, I trust the authors).

Создайте в директории через VS Code или через консоль новый файл с названием main.cpp (либо любым другим названием).

Скопируйте туда следующий код (после компиляции данный код будет выводить в консоль "Hello, World!"):

#include <iostream>

int main(int, char**) {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

Сохраните файл и откройте консоль (в VS Code или отдельно). Убедитесь, что находитесь в той же директории, в которой находится файл main.cpp. Для этого можно воспользоваться командами pwd и ls. Затем запустите компилятор (в консоли) и подайте ему на вход файл main.cpp в качестве аргумента:

g++ main.cpp

В текущей директории должен появиться исполняемый файл a.out. Запустите его следующим образом:

./a.out

Убедитесь, что в консоли вывелось “Hello, World!”.

Затем скомпилируйте исполняемый файл следующим образом (обратите внимание, что в Linux у исполняемых файлов нет расширения по умолчанию. В Windows, например, исполняемые файлы имеют расширение .exe):

g++ -std=c++20 -Wall -Werror -Wextra -Wpedantic main.cpp -o hello_world

Где:

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

Запустите исполняемый файл и убедитесь, что вывод не поменялся:

./hello_world