Статикалық кітапхана - Static library

Жылы Информатика, а статикалық кітапхана немесе статикалық байланысқан кітапхана - бұл қоңырау шалушыда шешілетін күнделікті, сыртқы функциялар мен айнымалылар жиынтығы құрастыру уақыты және a мақсатты қосымшасына көшірілген құрастырушы, байланыстырушы, немесе байланыстырушы, өндіруші ан нысан файлы және а дербес орындалатын.[1] Бұл орындалатын және оны құрастыру процесі а ретінде белгілі статикалық құрастыру бағдарламаның Тарихи тұрғыдан кітапханалар тек қана болуы мүмкін статикалық. Статикалық кітапханалар басқа статикалық кітапханалармен біріктірілген және нысан файлдары құру / байланыстыру кезінде бірыңғай қалыптастыру орындалатын немесе жүктелген жұмыс уақыты ішіне мекенжай кеңістігі олардың сәйкес орындалуы статикалық жадты жылжыту компиляция кезінде / сілтеме кезінде анықталады.

Артылықшылықтар мен кемшіліктер

Кітапханалардың орнына орындалатын файлмен статикалық байланыстырудың бірнеше артықшылығы бар динамикалық байланыстыру оларды. Ең маңызды артықшылығы - қосымшаның барлық кітапханалардың бар екендігіне және олардың дұрыс нұсқасы екендігіне сенімді болуы. Бұл тәуелділік проблемаларын болдырмайды, олар ауызекі тілде белгілі DLL Hell немесе жалпы түрде тәуелділік тозақ. Статикалық байланыстыру сонымен қатар қолданбаның таралуын және орнатылуын жеңілдететін бір орындалатын файлда болуына мүмкіндік береді.

Статикалық байланыстыра отырып, мақсатты орындалатын (немесе мақсатты кітапхана) тікелей және жанама сілтеме жасайтын кітапхананың бөліктерін қосу жеткілікті. Динамикалық кітапханалармен бүкіл кітапхана жүктеледі, өйткені қосымшалар қандай функцияларды алатыны алдын-ала белгісіз. Бұл артықшылықтың іс жүзінде маңызды болуы кітапхана құрылымына байланысты.

Статикалық байланыстыруда орындалатын файлдың мөлшері динамикалық байланыстыруға қарағанда көбірек болады, өйткені кітапхана коды сақталады орындалатын ішінде бөлек файлдарда емес. Бірақ егер кітапханалық файлдар қосымшаның бөлігі ретінде саналса, онда жалпы көлемі ұқсас болады, немесе егер компилятор қолданылмаған белгілерді жойса.

Қоршаған орта

Қосулы Microsoft Windows қосымшаға қосымшаға қажет кітапхана файлдарын қосу әдеттегідей.[2] Қосулы Unix тәрізді жүйелер бұл аз кездеседі пакеттерді басқару жүйелері кітапхана файлдарының дұрыс болуын қамтамасыз ету үшін пайдалануға болады. Бұл кітапхана файлдарын кеңістікті үнемдеуге әкелетін көптеген қосымшалар арасында бөлуге мүмкіндік береді. Сонымен қатар, ол кітапхананы қолданатын қосымшаларды жаңартпай, қателіктер мен қауіпсіздік ақауларын жою үшін кітапхананы жаңартуға мүмкіндік береді. Іс жүзінде көптеген орындалатындар (әсіресе Microsoft Windows-қа бағытталған) тұрақты және динамикалық кітапханаларды қолданады.

Байланыстыру және жүктеу

Кез-келген статикалық кітапхана функциясы басқа статикалық кітапханадағы функцияны немесе процедураны шақыра алады. The байланыстырушы және тиегіш мұны басқалар сияқты жұмыс істейді нысан файлдары. Статикалық кітапхана файлдары сілтеме бойынша болуы мүмкін жұмыс уақыты а байланыстырушы тиегіш (мысалы, X11 модуль жүктеуші). Алайда, мұндай процесті шақыруға бола ма статикалық байланыстыру даулы болып табылады.

C / C ++ тілінде статикалық кітапханалар құру

Статикалық кітапханаларды оңай жасауға болады C немесе C ++. Бұл екі тіл қамтамасыз етеді сақтау класының сипаттамалары басқа мүмкіндіктерді ұсынумен қатар, сыртқы немесе ішкі байланысты көрсету үшін. Мұндай кітапхананы құру үшін экспортталған функциялар / процедуралар және басқа объектілер айнымалылары көрсетілуі керек сыртқы байланыс (яғни С-ны қолданбау арқылы) статикалық кілт сөз ). Статикалық кітапхананың файл атаулары әдетте «.a» кеңейтіліміне ие Unix тәрізді жүйелер[1] және «.lib» қосулы Microsoft Windows.

Мысалы, атты архив құру үшін libclass.a файлдардан сынып1.o, 2. сынып, сынып3.o, келесі пәрмен қолданылуы мүмкін:[1]

ar rcs licclass.a class1.o class2.o class3.o

байланысты болатын бағдарламаны құрастыру сынып1.o, 2. сынып, және сынып3.o біреуі мүмкін:

cc main.c libclass.a

немесе (егер libclass.a сияқты стандартты кітапхана жолына орналастырылған / usr / local / lib)

cc main.c -lclass

немесе (байланыстыру кезінде)

ld ... main.o -lclass ...

орнына:

cc main.c сынып1.o сынып2.o сынып3.o

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ а б c «Статикалық кітапханалар». TLDP. Алынған 3 қазан 2013.
  2. ^ Андерсон, Рик (2000-01-11). «DLL тозақтың ақыры». microsoft.com. Архивтелген түпнұсқа 2001-06-05 ж. Алынған 2013-08-31. Жеке DLL - бұл белгілі бір қосымшамен орнатылатын және тек сол қолданбада қолданылатын DLL.