Статична бібліотека (також бібліотека статичного зв'язування) — поняття у інформатиці, що означає бібліотеку підпрограм, яка зв'язується (компонується) з програмою на етапі побудови. Підпрограми таким чином копіюються безпосередньо у двійковий файл програми, що створюється. Програма, побудована таким чином, називається статичною, на противагу динамічній, що потребує компонування з бібліотеками на етапі виконання.
Переваги і недоліки
Основною перевагою статичного зв'язування у порівнянні з є те, що програма є незалежною від зовнішніх файлів бібліотек. Іншими словами, всі бібліотечні функції вже містяться всередині програми, і їх версії є саме тими, які використовувалися при побудові програми. Таким чином усувається пекло динамічних бібліотек (або іншими словами пекло залежностей), а дистриб'юція і встановлення програми максимально спрощуються.
Недоліком статичного лінкування є суттєве збільшення розмірів файлів, через наявність у них бібліотечних функцій. Втім, це не має значення, якщо програма є повністю незалежною від стандартних бібліотек виконання (наприклад, програма, написана на мові Pascal для Unix-подібних операційних систем, може бути повністю незалежною від стандартних бібліотек мови C).
Особливості у різних ОС
У Microsoft Windows є звичайною практикою включати бібліотечні файли разом з програмою при її розповсюдженні. У Unix-подібних операційних системах такий підхід значно менше розповсюджений, оскільки системи керування пакунками зазвичай можуть відслідкувати залежності і гарантувати, що потрібні розділювані бібліотеки присутні у системі. Динамічний підхід заощаджує місце на диску і дозволяє просте оновлення бібліотек (наприклад, коли у них виявляються уразливості — якби всі програми були зв'язані статично, то для усунення уразливості бібліотечної функції довелося б оновлювати кожну програму окремо).
Компонування і завантаження
Завантаження двійкового файлу програми, що містить бібліотечний код, відбувається стандартними засобами операційної системи (такими, як exec
або spawn
).
Всі виклики підпрограм при статичному компонуванні є простими командами переходу (такими, як call
у архітектурі x86).
Незвичайним застосуванням статичних бібліотек або об'єктних файлів є їх компонування на етапі виконання. Такий підхід використовувався, зокрема, у завантажнику модулів X Window System.[]
Статичні бібліотеки як набори об'єктних файлів
Створення статичних бібліотек є простим при програмуванні на C або . Якщо деяка функція не позначена як static
, вона буде видимою за межами об'єктного файлу, де вона розташовується. Для створення статичної бібліотеки з об'єктних файлів достатньо скористатися програмою (або аналогічною у Microsoft Windows чи DOS); отриманий файл матиме суфікс «.a» (англ. archive) або «.lib» у Windows, DOS і OS/2.
Приклади
Unix
Щоб створити архів libclass.a з файлів class1.o, class2.o, class3.o можна запустити таку команду:
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
:
ld ... main.o -lclass ...
Замість статичної бібліотеки можна просто вказати набір об'єктних файлів:
cc main.c class1.o class2.o class3.o
Microsoft Windows
У Windows аналогом програми ar
є LIB
(формат файлів, що генерується цими програмами, не відрізняється). Щоб створити бібліотеку some.lib
з файлів f1.obj
і f2.obj
достатньо виконати команду:
lib /out:some.lib f1.obj f2.obj
Див. також
Джерела
- . TLDP. Архів оригіналу за 3 липня 2013. Процитовано 3 жовтня 2013.
- (англ.). Архів оригіналу за 21 лютого 2020. Процитовано 21 лютого 2020.
FPC compiles and links a static executable by default. That means it tells the linker to put all .o files of the project and all packages into one big executable.
{{}}
: Проігноровано|chapter=
() - Anderson, Rick (11 січня 2000). (англ.). microsoft.com. Архів оригіналу за 5 червня 2001. Процитовано 31 серпня 2013.
Private DLLs are DLLs that are installed with a specific application and used only by that application.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Statichna biblioteka takozh biblioteka statichnogo zv yazuvannya ponyattya u informatici sho oznachaye biblioteku pidprogram yaka zv yazuyetsya komponuyetsya z programoyu na etapi pobudovi Pidprogrami takim chinom kopiyuyutsya bezposeredno u dvijkovij fajl programi sho stvoryuyetsya Programa pobudovana takim chinom nazivayetsya statichnoyu na protivagu dinamichnij sho potrebuye komponuvannya z bibliotekami na etapi vikonannya Perevagi i nedolikiOsnovnoyu perevagoyu statichnogo zv yazuvannya u porivnyanni z ye te sho programa ye nezalezhnoyu vid zovnishnih fajliv bibliotek Inshimi slovami vsi bibliotechni funkciyi vzhe mistyatsya vseredini programi i yih versiyi ye same timi yaki vikoristovuvalisya pri pobudovi programi Takim chinom usuvayetsya peklo dinamichnih bibliotek abo inshimi slovami peklo zalezhnostej a distrib yuciya i vstanovlennya programi maksimalno sproshuyutsya Nedolikom statichnogo linkuvannya ye suttyeve zbilshennya rozmiriv fajliv cherez nayavnist u nih bibliotechnih funkcij Vtim ce ne maye znachennya yaksho programa ye povnistyu nezalezhnoyu vid standartnih bibliotek vikonannya napriklad programa napisana na movi Pascal dlya Unix podibnih operacijnih sistem mozhe buti povnistyu nezalezhnoyu vid standartnih bibliotek movi C Osoblivosti u riznih OS U Microsoft Windows ye zvichajnoyu praktikoyu vklyuchati bibliotechni fajli razom z programoyu pri yiyi rozpovsyudzhenni U Unix podibnih operacijnih sistemah takij pidhid znachno menshe rozpovsyudzhenij oskilki sistemi keruvannya pakunkami zazvichaj mozhut vidslidkuvati zalezhnosti i garantuvati sho potribni rozdilyuvani biblioteki prisutni u sistemi Dinamichnij pidhid zaoshadzhuye misce na disku i dozvolyaye proste onovlennya bibliotek napriklad koli u nih viyavlyayutsya urazlivosti yakbi vsi programi buli zv yazani statichno to dlya usunennya urazlivosti bibliotechnoyi funkciyi dovelosya b onovlyuvati kozhnu programu okremo Komponuvannya i zavantazhennyaZavantazhennya dvijkovogo fajlu programi sho mistit bibliotechnij kod vidbuvayetsya standartnimi zasobami operacijnoyi sistemi takimi yak exec abo spawn Vsi vikliki pidprogram pri statichnomu komponuvanni ye prostimi komandami perehodu takimi yak call u arhitekturi x86 Nezvichajnim zastosuvannyam statichnih bibliotek abo ob yektnih fajliv ye yih komponuvannya na etapi vikonannya Takij pidhid vikoristovuvavsya zokrema u zavantazhniku moduliv X Window System dzherelo Statichni biblioteki yak nabori ob yektnih fajlivStvorennya statichnih bibliotek ye prostim pri programuvanni na C abo C Yaksho deyaka funkciya ne poznachena yak static vona bude vidimoyu za mezhami ob yektnogo fajlu de vona roztashovuyetsya Dlya stvorennya statichnoyi biblioteki z ob yektnih fajliv dostatno skoristatisya programoyu abo analogichnoyu u Microsoft Windows chi DOS otrimanij fajl matime sufiks a angl archive abo lib u Windows DOS i OS 2 PrikladiUnix Shob stvoriti arhiv libclass a z fajliv class1 o class2 o class3 o mozhna zapustiti taku komandu ar rcs libclass a class1 o class2 o class3 o Dlya statichnogo zv yazuvannya programi main z modulyami class1 o class2 o i class3 o sho znahodyatsya u shojno stvorenij biblioteci cc main c libclass a abo yaksho libclass a znahoditsya u standartnomu misci takomu yak usr local lib cc main c lclass Yaksho dlya linkuvannya vikoristati bezposeredno programu ld ld main o lclass Zamist statichnoyi biblioteki mozhna prosto vkazati nabir ob yektnih fajliv cc main c class1 o class2 o class3 o Microsoft Windows U Windows analogom programi ar ye LIB format fajliv sho generuyetsya cimi programami ne vidriznyayetsya Shob stvoriti biblioteku some lib z fajliv f1 obj i f2 obj dostatno vikonati komandu lib out some lib f1 obj f2 objDiv takozhBiblioteka pidprogram Komponuvalnik en Dynamic link library Ob yektnij modul en Dzherela TLDP Arhiv originalu za 3 lipnya 2013 Procitovano 3 zhovtnya 2013 angl Arhiv originalu za 21 lyutogo 2020 Procitovano 21 lyutogo 2020 FPC compiles and links a static executable by default That means it tells the linker to put all o files of the project and all packages into one big executable a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Proignorovano chapter dovidka Anderson Rick 11 sichnya 2000 angl microsoft com Arhiv originalu za 5 chervnya 2001 Procitovano 31 serpnya 2013 Private DLLs are DLLs that are installed with a specific application and used only by that application