Ім'я файлу: СПЗ_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).

Хід роботи

  1. Створення проектів в GCC.

    1. Однофайлова програма.

В текстовому редакторі було створено програму, представлену на рис. 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.
скачати

© Усі права захищені
написати до нас