Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 5198 Лабораторна робота №4 на тему Основні прийоми створення та застосування С-бібліотек в Linux, Операційні системи

Лабораторна робота №4 на тему Основні прийоми створення та застосування С-бібліотек в Linux, Операційні системи

« Назад

Мета: Оволодіння практичними навичками щодо створення та застосування С-бібліотек в Linux; розвиток інженерного мислення студентів у галузі операційних систем та системного програмування.

Теоретичні відомості:

Імена статичних бібліотек (архівів) традиційно мають розширення.a і починаються з префікса lib. Утиліта ar дозволяє створювати архіви, видаляти з них окремі файли та ін. Наприклад, щоб створити із об'єктних файлів test1.o і test2.o архів libtest.a, необхідно в командному рядку ввести:

ar cr libtest.a test1.o test2.o

Цей архів можна підключати до програм за допомогою опції -ltest компілятора gcc. Наприклад, наступна команда скомпонує виконуваний файл app з об'єктного файлу app.o і статичної бібліотеки libtest.a (якщо остання міститься в поточному каталозі або одному зі стандартних системних каталогів):

gcc -o app app.o -L. -ltest

Імена динамічно-зв'язуваних (подільних) бібліотек традиційно мають розширення.so і, як і імена статичних бібліотек, починаються з префікса lib.

Для створення динамічно-зв'язуваної бібліотеки необхідно спеціальним чином скомпілювати її складові об'єктні файли, наприклад, за допомогою опції -fPIC компілятора gcc:

gcc -c -fPIC test1.c test2.c

А потім об'єднати ці об'єктні файли в бібліотеку, наприклад, використовуючи опцію -shared компілятора gcc:

gcc -shared -fPIC -o libtest.so test1.o test2.o

Підключення динамічно-зв'язуваних бібліотек до виконуваних файлів за допомогою компілятора gcc нічим не відрізняється від підключення статичних бібліотек.

За замовчанням, gcc обирає динамічно-зв'язувану бібліотеку. Віддати пріоритет статичній бібліотеці можна за допомогою опції –static:

gcc -static -o app app.o -L. -ltest

Хід роботи:

1. Створення та підключення статичних бібліотек (архівів).

Практично відпрацювати порядок створення та підключення статичних бібліотек на прикладі програми, наведеної в каталозі example_1.

2. Створення та підключення динамічно-зв'язуваних (подільних) бібліотек. Управління вибором способу підключення бібліотек, наявних у двох варіантах.

Практично відпрацювати порядок створення та підключення подільних бібліотек на прикладі програми, наведеної в каталозі example_1.

3. Забезпечення доступності потрібних програмі динамічно-зв'язуваних бібліотек.

Практично відпрацювати порядок використання опції gcc -Wl,-rpath, продемонструвати її застосування на прикладі з каталогу example_1.

Практично відпрацювати порядок використання змінної оточення LD_LIBRARY_PATH, продемонструвати її застосування на прикладі програми з каталогу example_1.

4. Перевірка та захист звітів.

Перелік контрольних питань:

1. Статична бібліотека, статична компоновка програм.

2. Порядок іменування статичних бібліотек.

3. Призначення та порядок використання утиліти ar.

4. Подільна бібліотека, динамічна компоновка.

5. Особливості подільних бібліотек в порівнянні зі статичними.

6. Порядок іменування подільних бібліотек.

7. Призначення утиліти ldd.

8. Призначення опції gcc -static.

9. Призначення функцій dlopen(), dlsym(), dlclose(), dlerror().

10. Призначення змінної оточення LD_LIBRARY_PATH.

З повагою ІЦ "KURSOVIKS"!