Статична бібліотекаСтатична бібліотека (також бібліотека статичного зв'язування) — поняття у інформатиці, що означає бібліотеку підпрограм, яка зв'язується (компонується) з програмою на етапі побудови. Підпрограми таким чином копіюються безпосередньо у двійковий файл програми, що створюється.[1] Програма, побудована таким чином, називається статичною, на противагу динамічній, що потребує компонування з бібліотеками на етапі виконання. Переваги і недолікиОсновною перевагою статичного зв'язування у порівнянні з динамічним є те, що програма є незалежною від зовнішніх файлів бібліотек. Іншими словами, всі бібліотечні функції вже містяться всередині програми, і їх версії є саме тими, які використовувалися при побудові програми. Таким чином усувається пекло динамічних бібліотек (або іншими словами пекло залежностей), а дистриб'юція і встановлення програми максимально спрощуються. Недоліком статичного лінкування є суттєве збільшення розмірів файлів, через наявність у них бібліотечних функцій. Втім, це не має значення, якщо програма є повністю незалежною від стандартних бібліотек виконання (наприклад, програма, написана на мові Pascal для Unix-подібних операційних систем, може бути повністю незалежною від стандартних бібліотек мови C[2]). Особливості у різних ОСУ Microsoft Windows є звичайною практикою включати бібліотечні файли разом з програмою при її розповсюдженні.[3] У Unix-подібних операційних системах такий підхід значно менше розповсюджений, оскільки системи керування пакунками зазвичай можуть відслідкувати залежності і гарантувати, що потрібні розділювані бібліотеки присутні у системі. Динамічний підхід заощаджує місце на диску і дозволяє просте оновлення бібліотек (наприклад, коли у них виявляються уразливості — якби всі програми були зв'язані статично, то для усунення уразливості бібліотечної функції довелося б оновлювати кожну програму окремо). Компонування і завантаженняЗавантаження двійкового файлу програми, що містить бібліотечний код, відбувається стандартними засобами операційної системи (такими, як Всі виклики підпрограм при статичному компонуванні є простими командами переходу (такими, як Незвичайним застосуванням статичних бібліотек або об'єктних файлів є їх компонування на етапі виконання. Такий підхід використовувався, зокрема, у завантажнику модулів X Window System.[джерело?] Статичні бібліотеки як набори об'єктних файлівСтворення статичних бібліотек є простим при програмуванні на C або C++. Якщо деяка функція не позначена як ПрикладиUnixЩоб створити архів libclass.a з файлів class1.o, class2.o, class3.o можна запустити таку команду:[1] ar rcs libclass.a class1.o class2.o class3.o Для статичного зв'язування програми main з модулями class1.o, class2.o і class3.o, що знаходяться у щойно створеній бібліотеці: cc main.c libclass.a або (якщо libclass.a знаходиться у стандартному місці, такому як /usr/local/lib) cc main.c -lclass Якщо для лінкування використати безпосередньо програму ld ... main.o -lclass ... Замість статичної бібліотеки можна просто вказати набір об'єктних файлів: cc main.c class1.o class2.o class3.o Microsoft WindowsУ Windows аналогом програми lib /out:some.lib f1.obj f2.obj Див. також
Джерела
|
Portal di Ensiklopedia Dunia