Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Розробка статичних і динамічних бібліотек на мові програмування С / C + + в операційних систе ...

Реферат Розробка статичних і динамічних бібліотек на мові програмування С / C + + в операційних систе ...






Зміст

Введення

1 Компіляція програм мовою C/C + +

2 Компіляція декількох файлів

3 Створення бібліотек об'єктних файлів

3.1 Бібліотеки об'єктних файлів

3.2 Створення статичної бібліотеки

3.3 Створення динамічної бібліотеки

3.4 Використання динамічних бібліотек

4 Створення динамічних бібліотек

4.1 Функції роботи з динамічними бібліотеками

4.2 Створення динамічної бібліотеки для вирішення системи лінійних рівнянь

Висновки

Список використаної літератури

В 

Введення

Прості програми зазвичай складаються з одного вихідного файлу. Але якщо програми стає великою, її рекомендується їх розбивати на шматки, які функціонально обмежені і закінчені. Так як процес редагування при великому вихідному тексті стає складним і пошук невеликий помилки може спричинити за собою вимушене "вивчення" коду заново. Також великий файл програми збільшує час компіляції.

Але якщо кожна функція буде міститися в окремому файлі, то таких файлів може виявитися десятки або навіть сотні. Управляти такою кількістю файлів дуже складно. Для цього був придуманий механізм створення бібліотек об'єктних файлів.

Бібліотека об'єктних файлів - це файл містить кілька об'єктних файлів, які будуть використовуватися разом у стадії лінковки програми. Бібліотека містить символьний індекс, який складається з назв функцій і змінних і т.д., які містяться в бібліотеці. Це дозволяє прискорити процес лінковки програми, так як пошук функцій і змінних в об'єктних файлах бібліотеки відбувається набагато швидше, ніж пошук в наборі зазначених об'єктних файлів. p> Тому використання бібліотеки дозволяє компактно зберігати всі необхідні об'єктні файли в одному місці, і при цьому значно підвищити швидкість компіляції. p> У курсовій роботі наведені приклади створення і використання статичних і динамічних бібліотек. Д розроблено кілька простих динамічних бібліотек (зведення числа в ступінь і рішення системи лінійних рівнянь)

В 

1 Компіляція програм мовою C/C + +


Компілятор перетворює код програми на "людському" мові в об'єктний код зрозумілий комп'ютеру. Компіляторів під Linux існує багато, практично для кожного поширеного мови. Більшість самих затребуваних компіляторів входить в набір GNU Compiler Collection , відомих під назвою GCC (# "1.files/image001.gif">;;;


;

Програма в Як параметри приймає значення коефіціентів системи і назва функції, яку вона використовує.

Створимо динамічну бібліотеку:

Так як функція повертає два результати x1 і x2 в програмі будемо використовувати структуру.

"mytype.h" :


struct DPair {

double first;

double second;

};

Struct DPair (* powerfunc) (double, double, double, double, double, double);


"libsysur.c" :


# include "Mytype.h"


struct DPair sys2 (double a11, double a12, double a21, double a22, double b1, double b2) {

// nahodim opredelitel sistemy

struct DPair dPair;

double opr = a11 * a22-a12 * a21;

if (Opr! = 0) {

double ao11 = a22; double ao12 =-a21;

double ao21 =-a12; double ao22 = a11;


dPair.first = (ao11 * b1 + ao21 * b2)/opr;

dPair.second = (ao12 * b1 + ao22 * b2)/opr;

}


return dPair;


}


Створюємо динамічну бібліотеку libsysur . so наступними командами:


bash-3.00 # gcc -FPIC-c libsysur.c

bash-3.00 # gcc -Shared libsysur.o-o libsysur.so


Створюємо основну програму:


"sysur.c" :


# include

# include

# include "Mytype.h"


int main (int argc, char * argv []) {


void * Ext_library;// Хандлер зовнішньої функції

double a11; double a12; double a21; double a22;

double b1; double b2;

double (* Powerfunc) (double a11, double a12, double a21, double a22, double b1, double b2) ;//змінна, для зберігання адреси функції

В 

// завантаження бібліотеки

ext_library = dlopen ("/ root/dynamik/libsysur.so", RTLD_LAZY);

if (! ext_library) {

// якщо помилка, вивести на екран

fprintf (stderr, "dlopen () error:% s n ", dlerror ());

return 1;

};


// завантажуємо з бібліотеки необхідну процедуру

powerfunc = dlsym (ext_library, argv [1]);// отримуємо адресу необхідної функції

// ext_library-адресу завантаженої бібл. p>// Argv-необхідна функція або змінна


printf ("Vvedite a11 a12:");

scanf ("% lf % Lf ", & a11, & a12);

printf ("Vve...


сторінка 1 з 2 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Double Standards in Modern Politics
  • Реферат на тему: Double Entry Types of Balance Sheet
  • Реферат на тему: Double electric layer. Mechanism of formation and theory of structure
  • Реферат на тему: Розробка програми для перегляду bmp файлів
  • Реферат на тему: Розробка програми форматування текстових файлів