
- •Содержание
- •Сокращения
- •Введение
- •1. Исследовательский раздел
- •1.1. Исследование предметной области
- •1.1.1. Протокол stp
- •1.1.2. Протокол rstp
- •1.1.3. Использование Linux на сетевых устройствах, работающих по протоколу rstp
- •1.1.4. Демон mstpd
- •1.2. Обзор программных решений
- •1.3. Постановка задачи вкр
- •1.4. Концептуальная модель пм аус
- •1.5. Требования к разрабатываемому пм аус
- •Выводы по разделу
- •2. Конструкторский раздел
- •2.1. Обоснование выбора языка программирования и среды разработки
- •2.2. Производственные средства для настройки сетевых устройств, работающих по протоколу rstp
- •2.3. Организация связи пм аус с другими компонентами
- •2.4. Архитектура пм аус
- •2.5. Разработка алгоритма функционирования
- •2.6. Особенности хранения данных
- •2.6.1. База данных
- •2.6.2. Журналирование
- •2.7. Разработка пользовательского интерфейса
- •2.8. Разработка графического интерфейса
- •2.9. Разработка консольного интерфейса
- •2.10. Разработка программно-аппаратного интерфейса
- •Выводы по разделу
- •3. Технологический раздел
- •3.1. Сборка проектов на языке с
- •3.1.1. Системы сборки
- •3.1.2. Компиляторы языка с
- •3.1.3. Флаги и параметры gcc
- •3.1.6. Сборка проекта в Microsoft Visual Studio Code
- •3.2 Отладка пм аус
- •3.3. Подходы к тестированию пм аус
- •3.4. Инструментарий тестирования пм аус
- •3.4.1. Unit-тестирование
- •3.4.2. Тестирование взаимодействия с базой данных
- •3.4.3. Тестирование взаимодействия с консольным интерфейсом.
- •3.4.4. Тестирование взаимодействия с графическим (web) интерфейсом
- •3.4.5. Тестирование работы web-интерфейса в различных браузерах
- •3.4.6. Тестирование работы системы.
- •Выводы по разделу
- •Заключение
- •Список использованной литературы
3.1.6. Сборка проекта в Microsoft Visual Studio Code
Так как в качестве IDE была выбрана Microsoft Visual Studio Code, далее будет описан процесс сборки проекта в этой IDE.
Для начала, нужно настроить параметры сборки в VS Code, для этого используются два конфигурационный файла: c_cpp_properties.json и tasks.json. В первом файле настраивается компилятор и указывается список подключаемых библиотек, а во втором – непосредственно задача сборки.
Листинг 3.1. Конфигурационный файл c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}",
"/usr/angtel-sdk/sysroots/aarch64-oe-linux-musl/usr/include/",
"/usr/angtel-sdk/sysroots/aarch64-oe-linux-musl/usr/include/libnl3",
"/usr/angtel-sdk/sysroots/cortexa7hf-neon-oe-linux-musleabi/usr/include/",
"/usr/include",
"/usr/angtel-sdk/sysroots/aarch64-oe-linux-musl/usr/include"
],
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
В листинге 3.1 поле includePath отвечает за путь к заголовочным файлам, поле brouse – за путь к файлам исходного кода, в поле compilerPath указывается полный путь к компилятору, а в поле cStandard – версия стандарта языка С.
После того, как настройки компилятора завершены, создаются задачи для сборки. Основная задача сборки ПМ АУС приведена в листинге 3.2.
Листинг 3.2. Конфигурационный файл tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Make linux-switch",
"type": "shell",
"command": "make clean; make install-strip DESTDIR=\"~/projects/linux-switch_installation_folder\"; curl -T ../linux-switch_installation_folder/usr/local/bin/linux-switch -u root: ftp://192.168.0.8",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
Так как сборка ПМ АУС производится с помощью утилиты make, в поле command указан набор команд для сборки. Команда «make clean» очищает директорию от файлов предыдущей сборки для того, чтобы не было возможных коллизий из-за поменявшихся файлов Makefile. Команда «make install-strip DESTDIR=\"/home/student/projects/linux-switch_installation_folder\"» собирает проект и помещает его в указанную директорию. Команда «curl -T ../linux-switch_installation_folder/usr/local/bin/linux-switch -u root: ftp://192.168.0.8» производит загрузку исполняемого файла на плату, где будет производиться его дальнейший запуск. Благодаря задачам сборки в Visual Studio Code можно не беспокоиться о переносе исполняемого файла на плату вручную, а можно это автоматизировать.
Используемый для передачи в утилиту automake файл Makefile.am представлен в листинге 3.3. Так как ПМ АУС используется как часть более крупной программы linux-switch, у него отсутствует собственный Makefile и здесь представлен именно Makefile для linux-switch.
Листинг 3.3. Файл Makefile.am для сборки linux-switch
bin_PROGRAMS = \
linux-switch
common_libs = \
$(CONFDB_LIBS) $(JANSSON_LIBS) $(LIBLOG_LIBS) $(LIBEVENT_LIBS) \
$(LIBNL_LIBS) -lubox \
$(NULL)
common_cflags = \
$(AM_CFLAGS) $(CONFDB_CFLAGS) $(JANSSON_CFLAGS) $(LIBLOG_CFLAGS) \
$(LIBEVENT_CFLAGS) $(LIBNL_CFLAGS) \
$(NULL)
linux_switch_SOURCES = \
linux-switch.c \
log.c \
bitops.c \
priv_utils.c \
session-monitor.c \
stp-ctl.c \
bridge.c \
eth_control.c \
eth.c \
eth_sfp.c \
interfaces.c \
ipv4.c \
if-l3-vlan.c \
$(NULL)
В листинге 3.3 указаны переменные для настройки сборки: bin_PROGRAMS – список выходных исполняемых файлов, common_libs – список библиотек, common_cflags – список флагов для gcc, linux_switch_SOURCES – список файлов исходного кода. Параметры для переменных common_libs и common_cflags берутся из переменных окружения, настроенного с помощью autoconf.
После заполнения вышеуказанных конфигурационных файлов, сборку программы можно запустить с помощью комбинации клавиш Ctl+Shift+B, а запуск программы после сборки можно осуществить с помощью комбинации Ctl+F9.