Ім'я файлу: СПЗ_5_Тучина.docx Розширення: docx Розмір: 293кб. Дата: 10.05.2022 скачати Пов'язані файли: KM_SP-324_Tuchina_lab6.docx Міністерство освіти і науки України Національний авіаційний університет Навчально-науковий Інститут комп`ютерних інформаційних технологій Кафедра комп`ютеризованих систем управління Лабораторна робота №5 з дисципліни «Системне програмне забезпечення » Виконала: Студентка групи ІКІТ 324 Тучина В.В. Перевірив: викладач Глазок О.М. Київ 2017 Мета роботи: ознайомитися з основами розробки програмного забезпечення в Linux. Завдання роботи: вивчити основні матеріали про розробку в Linux; написати і скомпілювати програму за допомогою інструментарію розробки GNU / Linux. Теоретичні відомості Є два шляхи розробки програмного забезпечення в Linux: використання інтегрованих графічних середовищ розробки, і використання командного рядка. Власне кажучи, інтегровані середовища розробки також опираються на утиліти командного рядка, надаючи лише зручний графічний інтерфейс до них. Базові інструменти розробки для створення додатків Linux було створено в рамках проекту GNU. Ці інструменти – колекція компіляторів GNU Compiler Collection (GCC) і система збирання програм GNU. Щоб створити програму за допомогою цих інструментів, слід написати код в текстовому редакторі, зберегти його, і скомпілювати або інтерпретувати його за допомогою відповідного компілятора чи інтерпретатора та деяких допоміжних засобів. Серед іншого, GCC надає компілятори для мов Ada, C, C++, Java, і Fortran. Є також і пропрієтарні компілятори для Linux – це Intel C++ Compiler, Sun Studio, і IBM XL C/C++ Compiler. Мова Basic підтримується на платформі Linux у вигляді Visual Basic (проекти Gambas, FreeBASIC, і XBasic). Хід роботи Створення проектів в GCC. Однофайлова програма. В текстовому редакторі було створено програму, представлену на рис. 1: Рис. 1. Програма Hello world 1 За допомогою компілятора gcc було скомпільовано файл, представлений на рис. 1, в результаті отримали готову програму “hello”(виявилений за допомогою команди ls). Рис. 2. Результати компіляції програми Hello World 1 Дослідимо поведінку компілятора за наявності помилки в вихідному коді. Результати даного досліду представлені на рис. 3. Рис. 3. Gcc: помилка у вихідному коді 1.2. Мультифайлова програма. Було створено програму, представлену у 2-х файлах. а) б) Рис. 4. Двофайлова програма: а) main.c; б) hello.c Аби відкомпілювати мультифайлову програму, треба спочатку отримати об'єктний код з кожного початкового файлу окремо. Кожен такий код буде представляти собою об'єктний модуль, який записується в окремий об'єктний файл. Потім об'єктні модулі треба скомпонувати в один бінарний файл. Цю задачу виконує редактор зв’язків . Результати виконання даних дій, показані на рис. 5. Рис. 5. Компіляція і виконання двофайлового проекту Автоматичне збирання програм Автоматичне збирання програм здійснюється за допомогою утиліти make, яка виконує рутинну роботу автоматично. Сценарій для make записується у файлі з ім'ям Makefile і поміщається в робочий каталог проекту. Найголовніша перевага make – це "інтелектуальний" спосіб рекомпіляції, який вона застосовує: в процесі відладки make компілює лише змінені файли. Використаємо для автоматичного збирання попередній проект. Для цього потрібно написати make – файл і помістити в робочий каталог проекту. Для даного проекту make-файл вийшов простим, і схожим з командами, що ми вводили в термінал. Рис. 6. Автоматичне збирання проекту Модель клієнт-інтерфейс-сервер Модель КІС (Клієнт-інтерфейс-сервер) - це елегантна концепція розподілу початкового коду в репозиторії, в рамках якої всі елементи вихідного коду можна поділити на клієнти, інтерфейси і сервери. Сервер – це елемент, який надає певні послуги (to serve - служити). У нашому випадку це можуть бути функції, структури, перерахування (множини), константи, глобальні змінні та ін. У мові C++ в якості сервера найчастіше виступають класи або ієрархії класів. Клієнт може скористатися наданими послугами, тобто викликати функцію зі своїми фактичними параметрами, створити екземпляр структури, скористатися константою і тому подібне. В C++, як правило, клієнт використовує клас як тип даних і використовує його члени. Клієнт з сервером повинні "розуміти" один одного, інакше взаємодія неможлива. Інтерфейс (протокол) - це умовний набір правил, згідно з якими взаємодіють клієнт і сервер. У нашому випадку (мультифайловий Hello World) інтерфейсом (протоколом) є загальне (спільне) ім'я в таблиці символів двох об'єктних файлів. Перероблюємо проект Hello World, так, щоб він реалізував модель КІС. Для цього створюємо заголовочний файл для hello.c і підключаємо його до основного файлу. Рис. 7. Зміни у проекті Hello World Оскільки в вихідні коди було здійснено зміни, то необхідно перезбібрати проект. Рис. 8. Перезбирання проекту Бібліотеки Бібліотека - це набір скомпонованих особливим чином об'єктних файлів. Бібліотеки підключаються до основної програми під час лінковки. За способом компоновки бібліотеки підрозділяють на архіви (статичні бібліотеки, static libraries) і спільно використовувані (динамічні бібліотеки, shared libraries). Статична бібліотека - це просто архів об'єктних файлів, який підключається до програми під час лінковки. Ви можете отримати точно такий же ефект, якщо підключите кожен з цих об’єктних файлів окремо (за допомогою командного рядка або makefile). На відміну від статичних бібліотек, код спільно використовуваних (динамічних) бібліотек не включається в бінарний файл. Замість цього в бінарний файл включається лише посилання на бібліотеку. Створення статичної бібліотеки. Особливості при створенні бібліотечного файлу є лише у make-файлі. У цьому файлі потрібно, за допомогою команди ar створити бібліотечний файл. Рис. 9. Вихідні файли для створення і тестування(main.c) бібліотеки Рис. 10. Makefile для статичної бібліотеки Рис. 11. Створення бібліотечного файлу і його використання Створення динамічної бібліотеки Для створення динамічної бібліотеки, використаємо файли, з статичної бібліотеки. Все, що потрібно змінити для створення статичної бібліотеки – make-файл. Створення бібліотечного файла уже відбувається за допомогою gcc з аргумантом –shared, також для всіх файлів бібліотеки, потрібно створювати об’єктні файли з незалежним від розташування кодом. Рис. 12. Make-файл для динамічної бібліотеки Висновки: під час виконання лабораторної роботи було ознайомлено з основами розробки програмного забезпечення, бібліотек за допомогою команд gcc, make. |