Лабораторна робота №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"! |