Ohjelmakirjasto

Ohjelmakirjaston (lyhyt kirjasto , Englanti kirjasto , lyhyt lib ) tarkoitetut ohjelmaan on kokoelma aliohjelmien / rutiineja, jotka tarjoavat ratkaisuja temaattisesti liittyviä ongelmia. Toisin kuin ohjelmat, kirjastot ei itsenäisesti suoritettavia yksiköitä, mutta sisältää ylimääräisiä moduuleja , jotka ovat pyytäneet ohjelmia.

Laajemmassa mielessä ohjelmakirjastot (joita kutsutaan joskus myös "komponenttikirjastoksi" tai "luokkakirjastoksi") ovat kaikenlaisia ​​kirjastoja, jotka tarjoavat / sisältävät ohjelmakoodia (komponentteja). Tässä suhteessa tehdään ero ohjelmakirjastojen ja muiden välillä. ohjelmakoodityypin mukaan, esim. B. lähdetekstien, makroja, esine tai bytecode, konekieltä jne Vastaavasti kirjastot käytetään eri aikoina, jotkut vain yhteydessä ohjelmistokehityksen (työkaluista on kehitysympäristö ), toiset vain toteutuksen ohjelmien, toiset molempien sekamuotona. Tällaiset kirjastot eivät useinkaan sisällä vain alaohjelmia, vaan ohjelmakoodiosat kaikista ohjelmatyypeistä .

Kehykset ovat erityinen muoto ohjelmakirjastoista .

pääsy

Ohjelmointirajapinta (API) määrittelee mahdollisen pääsyn ohjelmakirjaston toimintoihin . Tämä on julkisesti saatavilla olevien toimintojen ja luokkien kokonaisuus; toisin kuin kirjaston yksityiset yksiköt, joihin ei ole pääsyä.

Joitakin omia ohjelmakirjastoja ei julkaista lähdekoodissa, koska ne edustavat yrityksen salaisuuksia. Suojaamaan analysointi , obfuscator jälkeen usein käytetään ja kaikki symbolit ( vaihteleva ja hyppyosoite nimet ) poistetaan.

Varastolomakkeet

Ohjelmakirjastot ja niiden sisältö voidaan tallentaa eri muodoissa ja rakenteissa käyttöjärjestelmästä ja kehitysympäristöstä riippuen, esimerkiksi:

  • Kirjasto on tiedostohakemisto , sen elementit / komponentit ovat yksittäisiä tiedostoja . a
  • Kirjasto on tiedosto, joka tunnistaa sen sisältämät komponentit kuuluvat kehitysympäristön ohjelmiin tai erityiseen kirjastonhallintaohjelmistoon ja prosesseihin.
Esimerkkejä: Niin kutsuttu '' DLL '' Microsoftilta tai PO-tiedosto IBM: n keskusyksiköistä lähdetekstien, objektimoduulien tai suoritettavien latausmoduulien kirjastona.
  • Erilaisia ​​kirjastoja hallitaan yhteisessä tiedostossa a , kehitysympäristö voi erottaa / käsitellä tämän. Esimerkki: MS Accessin MDB sisältää kirjastoja, joissa on lähdekoodia, makroja, ennalta käännetty pseudokoodi ja muita koodityyppejä.
  • Kirjastoa ei ole; komponentit tallennetaan ja suoritetaan yksittäisinä tiedostoina, esim. B. "EXE-tiedostoina".
a hallinnoi käyttöjärjestelmän tavallinen tiedostojen hallintajärjestelmä

Staattiset kirjastot

"Staattinen kirjasto" on ohjelmakirjasto, joka sisältää moduuleja / alaohjelmia, jotka on linkitetty toisen ohjelman kokoamiseen ns. Linkkerillä . Linkkeri muodostaa suoritettavan tiedoston, yleensä pääohjelma, tai (riippuen käyttöjärjestelmästä) kuormituksen moduuli , joka kuorma kirjasto , jossa moduulit pyydetty sen pysyvästi (staattisesti) integroitu / liitteenä.

Optimoiva linkkeri etsii vain niitä komponentteja (aliohjelmia tai tietoja) määritetyistä objektimoduuleista (kirjastotiedostoista), jotka ohjelma tosiasiassa kutsuu (viittaa) (ja joille ohjelmassa ei ole ylikirjoitusta ) ja liittää ne sitten ohjelmoida. Tuloksena oleva tiedosto on vastaavasti suurempi. Yksinkertaiset linkit yksinkertaisesti lisäävät koko objektimoduulin tai koko kirjaston ja suurentavat näin ohjelmaa vielä enemmän.

Staattinen kirjasto on yleensä itse lähdekoodin tulos, joka on jaettu useisiin moduuleihin, joiden linkit yhdistävät sitten kokoelmat ( objektimoduulit ) kirjaston muodostamiseksi.

Dynaamiset kirjastot

Komponenttien välille dynaamiset kirjastot ovat vain ladataan suoraan tärkein muistiin aikana ajonaikaiset ohjelman kautta ns loader . Tämä tapahtuu joko ohjelman nimenomaisella käskyllä ​​tai implisiittisesti ns. Ajonaikaisella lataimella , jos ohjelma on linkitetty dynaamisesti . Nykyään tämä tapahtuu enimmäkseen käyttöjärjestelmän tuella, koska (katso alla) dynaamisia kirjastoja käsitellään erikseen vaihdettaessa ja näyttämällä ohjelman osoitetilassa. Siksi kuormaaja on nykyään enimmäkseen käyttöjärjestelmän komponentti.

Dynaamisesti linkitettyjen ohjelmien ei tarvitse huolehtia vaadittujen dynaamisten komponenttien lataamisesta itse. Kanssa dynaaminen yhdistää , kirjasto ja kokoaminen on vain löyhästi sidoksissa. Tarvittavien symbolien ( muuttuja- ja hyppyosoitteiden nimet ) kopioinnin sijasta , kuten staattisen linkityksen tapauksessa, niihin viitataan vain. Niin kutsuttu ajonaikainen sideaine huolehtii dynaamisten kirjastojen lataamisesta ja symbolien etsimisestä . Viitatut symbolit ratkaistaan ​​joko välittömästi (ennen varsinaisen ohjelman aloittamista tai ladattaessa kirjastosta) tai laiska ( laiska), kun symbolia käytetään ensimmäisen kerran.

Tyypillinen käyttötapa kirjastojen nimenomaiseen avaamiseen (symbolien osoitteen etsiminen niiden nimestä nimen käyttämiseksi) on plug-in- arkkitehtuureilla. Toinen skenaario on valinnainen kirjasto, jota käytetään, jos sitä on läsnä, mutta sen puuttuminen ei ole virhe.

Yksi dynaamisten kirjastojen etu on, että dynaamista kirjastoa käyttävät ohjelmat hyötyvät kirjaston virhekorjauksista, eikä niitä tarvitse kääntää uudelleen. Jos esimerkiksi OpenSSL- kirjastosta löytyy virhe ja se korjataan (vastaava kirjasto on korvattu), riittää, että käynnistetään tätä kirjastoa käyttävät ohjelmat uudelleen myös näiden ohjelmien virheen korjaamiseksi.

Koska tiedostot jotka dynaamiset kirjastot on varastoituna vain lukea ja suorittaa käytön aikana, mutta ei ole muuttunut, käyttöjärjestelmiin kanssa virtuaalimuistin vain ladata dynaamiset kirjastot kerran ja voi sitten näyttää ne osoiteavaruuden kaikkien prosessien käyttää niitä. Tämä on edullista esimerkiksi monitoimijärjestelmissä , kun kirjastot ovat kokonaisuudessaan hyvin suuria ja niitä käytetään monissa prosesseissa samanaikaisesti. (Jos dynaamisella kirjastolla on tiloja tai tallennettua dataa, se voidaan siepata kirjoittamalla kirjoituksella .)

Monet modernit käyttöjärjestelmät eivät kuitenkaan lataa dynaamisia kirjastoja heti, vaan näyttävät ne tarvittaessa suoraan kiintolevyltä - niitä kohdellaan kuin vaihdettuja sivuja . Vastaavasti sivut, joita ei vaadita ja jotka kuuluvat dynaamiseen kirjastoon ja joita ei ole muutettu, vain hylätään. Tarvittaessa ne voidaan ladata uudelleen kiintolevyltä.

Esimerkkejä

Ohjelmakirjastot tarjoavat komponentteja tietyissä yhteyksissä, joihin niiden (täytyy) sopia rakenteeltaan ja rajapinnoiltaan. Vastaavasti ohjelmakirjastoja on esimerkiksi seuraavissa yhteyksissä:

Kirjastot eri ohjelmointikielillä

Ohjelmointikielen kirjastot sisältävät palveluja, joita ei ole otettu käyttöön kääntäjässä, mutta jotka on ohjelmoitu itse kielelle ja jotka ovat ohjelmoijan käytettävissä joko kääntäjän kanssa tai täysin erillään siitä. Ensimmäisessä tapauksessa kirjasto määritetään yleensä kielen kuvauksessa. Toisessa tapauksessa puhutaan ulkoisesta kirjastosta.

Kielikuvauksessa määritetyt kirjastot eroavat toisinaan suuresti toisistaan.

Kieli Osat / pakkaukset Otsikot / luokat Toiminnot / menetelmät / konstruktorit
C (C89 + muutokset) 1 18. päivä 142
C (C99) 1 24 482
C ++ 1 32 + 18 (C89)
Java 2 (JDK 1.2) 62 1,287 18 000 ≈
Java 6 202 3,850 21,881
.Net 1.0 41 3,581 35,470
NET 1.1 43 3,818 37,556
.Net 2.0 51 7,419 74,607
.Net 3.0 80 10,639 102,613
NET 3.5 98 11,417 109,657

Java

Java on oma alusta ja käyttää kirjastokonseptia, joka ei ole sidottu käyttöjärjestelmään. Periaatteessa ei tehdä eroa ohjelman ja kirjaston välillä. Kaikki luokat kootaan .class- tiedostoina ja ladataan tarvittaessa. Yleensä kirjastot, jos ne koostuvat useista luokista, yhdistetään Java-arkistoon . Itse Java-sovellusliittymä on saatavana myös Java-arkistojen muodossa.

Koska kirjaston yksittäiset luokat ladataan vain ajon aikana, voi olla viivästyksiä luokan ensimmäisessä käytössä, kunnes luokka on ladattu ja alustettu. Vuonna Java reaaliaikaisia järjestelmiä , mutta myös Java SE , luokka kuormaaja voi ladata tiettyjä tai kaikki tarvittavat kirjastot käynnistettäessä tarkoituksenmukaisten metodikutsuja myös enää purkaa ne, niin ettei odottamattomia viivettä käytössä .

Kirjastot eri käyttöjärjestelmissä

Windows

Käyttöjärjestelmiä Windows ja OS / 2 on kirjasto tiedosto, joka sitoo dynaamisesti DLL (varten D SE Dynamic L muste L ibrary kutsutaan). Vastaavasti näillä tiedostoilla on yleensä tiedostotunniste .dll . Niiden tiedostomuoto on Uusi suoritettava (16-bittinen), Lineaarinen suoritettava (32-bittinen OS / 2) tai Kannettava suoritettava (32- tai 64-bittinen Windows).

Windows erottaa useita DLL-tyyppejä:

Lähtötason DLL: t sisältävät toimintoja, kun taas ActiveX-DLL: t sisältävät luokkia .

Windows 98: een ja Windows NT 4.0: een saakka olevia DLL-tiedostoja ei voida hallita - mikä tahansa ohjelma voi vaihtaa niitä ja saattaa vahingoittaa käyttöjärjestelmää. Windows Me: llä , Windows 2000: lla ja sitä seuraavilla versioilla on järjestelmäsuojaus, joka sisältää myös DLL: t.

etuja

  • Koodin lisäksi tietoja (esimerkiksi valintaikkunan resursseja) voidaan käyttää yhdessä useissa prosesseissa.
  • DLL-tiedostot linkitetään usein staattisesti, mutta ne voidaan myös linkittää dynaamisesti . Dynaaminen tarkoittaa tässä, että ohjelma on nimenomaisesti ladannut DLL: n suorituksen aikana ja DLL: ssä olevat toiminnot linkitetään ohjelmaan "manuaalisesti". Tämä mahdollistaa ohjelman toimintojen muuttamisen ajon aikana vaihtamalla DLL: n.
  • DLL-tiedostoja voidaan ylläpitää pääohjelmasta riippumatta. Tämä tarkoittaa, että DLL: n toimintoja voidaan muuttaa ilman ohjelman tietämystä. Sitten DLL yksinkertaisesti vaihdetaan (vanha DLL-tiedosto korvataan) tarvitsematta muuttaa pääohjelmaa.
  • Koska DLL on sisällytettävä pääohjelmaan itsenäisenä tiedostona, koodin tarjoajat voivat paremmin varmistaa, että DLL: n toimintoja käyttävät ohjelmoijat maksavat myös siitä. DLL: n toiminnallisuus ei häviä (kuten kirjastossa) ohjelman koodissa. Vapaiden ohjelmistojen kannattajat pitävät tätä etua haittana.

haitta

  • DLL-tiedostojen muutokset johtavat usein muutoksiin ohjelmassa. Tämä johtaa helposti version ristiriitoihin, joiden jäljittäminen on usein hyvin vaikeaa. Yksi DLL-tiedostojen perusajatuksista oli jakaa ohjelmakoodi useiden ohjelmien välillä muistin säästämiseksi. Käytännössä monet ohjelmat kuitenkin kirjoittavat DLL-tiedostot Windowsin järjestelmähakemistoon asennuksen aikana, joita mikään muu ohjelma ei voi käyttää muuta kuin tätä ohjelmaa. Lisäksi kehitys ja erityisesti yhteys on monimutkaisempi kuin staattisen kirjaston kanssa.
  • Käytännössä tällä ei kuitenkaan ole enää merkitystä, koska ainakin Windows 2000: n useimpiin sovelluksiin on sisältynyt yksityisiä kirjastoja asennuksen kanssa, ts. DLL-ristiriidan mukainen versiokonflikti on suljettu pois. Windows-käyttöjärjestelmässä sovellusten ohjelmakansioon tallennetuilla kirjastoilla on korkeampi prioriteetti kuin koko järjestelmän käytettävissä olevilla kirjastoilla.

Unixin kaltaiset järjestelmät

Käytössä Unix-käyttöjärjestelmille (kuten Linux ), staattiset kirjastot käyttävät tiedostotarkennetta .a(mistä "arkisto") ja se voidaan tarkastella ja muokata kanssa UNIX-ohjelmia arja nm. Pakettien hallintaa tarjoavissa järjestelmissä staattiset kirjastot sijaitsevat usein erillisessä kehityspaketissa yhdessä otsikkotiedostojen kanssa .

Termi jaettu kirjasto on yleinen dynaamisille kirjastoille . Suoritettava ja linkittävä muoto (ELF) , Linuxin, FreeBSD: n ja Solariksen käyttämä vakiomuoto , on erittäin suosittu . Laajennus .so( jaetusta objektista , "yhteisesti käytetty esine") on vakiintunut näille tiedostoille . Pääsääntöisesti kirjastonimi seuraa versionumero binäärirajapinnan (ABI versio) niin, että useita versioita kirjastosta voidaan asentaa samaan aikaan. Myös olemassa olevan sisällönkuvaustietoja .sovoidaan readelfkysyä esimerkiksi .

Jaetut kirjastot Linuxissa (lukuun ottamatta muutamia matalan tason kirjastoja) alkavat yleensä etuliitteellälib”. Varsinainen kirjastotiedosto sisältää koko versionumeron. Symboliset linkit mahdollistavat pääsyn sonimen kautta sekä pääsyn määrittelemättä versiota. Esimerkki:

  • libfoo.so -> libfoo.so.1
  • libfoo.so.1 -> libfoo.so.1.2.3
  • libfoo.so.1.2.3

soNimi on tässä tapauksessa " libfoo.so.1". Numero " .so." jälkeen muuttuu vain, jos kirjastoliittymä muuttuu uudessa versiossa.

Ajonaikainen linkkijärjestelmä käyttää suoritettavan ohjelman tai ladattavan kirjaston versiotietoja valitsemalla yhteensopivan käyttöliittymän sisältävän version . Koska ohjelmat voivat riippua sekä kirjastoista että muista kirjastoista, ohjelmistot voivat epäsuorasti riippua monista kirjastoista. Koska monet Unix-järjestelmät hallinnoivat kirjastoja yhdessä keskitetysti käyttöjärjestelmälle ja sovellukselle, on olemassa pakettien hallintoja, jotka voivat laskea riippuvuudet ja asentaa tarvittavat kirjastot automaattisesti. Esimerkkejä tällaisista paketinhallintajärjestelmistä ovat APT ja YUM .

Joissakin järjestelmissä UNIX-ohjelmaa voidaan käyttää lddselvittämään, mistä kirjastoista ohjelma suoraan riippuu .

Binaariversiossa jaettavien ohjelmistojen, esimerkiksi kaupallisen suljetun lähdekoodin ohjelmiston tai kannettavan / jakelusta riippumattoman ohjelmiston, on varmistettava, että kaikki vaaditut kirjastot ovat käytettävissä. Käyttäjäjärjestelmän, jossa tätä ohjelmistoa käytetään, on tällöin pystyttävä toimimaan yhteensopivana binaarialustana . Tämä voidaan tehdä seuraavasti:

  • Yhden tai useamman yhteensopivan käyttöjärjestelmän jakelun määrittely, esimerkiksi: "Suoritetaan Debian 5.0: n (Lenny) alla".
  • Jakelukohtaisen paketin käyttö niin, että paketinhallinta lataa tarvittavat kirjastot uudelleen. Haittana on valtava ponnistus paketin tarjoamiseksi monille olemassa oleville jakeluille.
  • Kaikkien dynaamisten kirjastojen toimitus. Nämä kopioidaan erilliseen hakemistoon yhdessä ohjelman, dokumentaation jne. Kanssa, jotta ne eivät törmääisi versioihin, jotka paketinhallinta on asentanut järjestelmänlaajuisesti. Tämän jälkeen kirjaston hakupolun mukauttaminen ohjelmaa LD_LIBRARY_PATHvarten komentosarjalla tai manuaalisesti.
  • Dynaamisten kirjastojen luovuttaminen ja staattinen linkitys , mikä on teknisesti vaikeaa tai voidaan estää lisenssiristiriidoilla. Menetät myös jakelupohjaisen päivityksen tuen.
  • Via yksityisiä kirjastoja , jotka on integroitu kautta suhteellinen Kirjastopolku. Voit tehdä tämän, hakemus on luotu linkittäjän vaihtoehto $ORIGIN.

Kohde- ja komponenttikeskeiset lähestymistavat voidaan toteuttaa tässä instantisoimalla ja palauttamalla vastaava objekti tai komponentti funktiossa.

etuja

  • Resurssien jakaminen
  • Tarpeettomien yksityisten kirjastojen välttäminen
  • Saatavana on valtava määrä ilmaisia ​​ja toimitettuja kirjastoja
  • Kirjastoja voidaan korjata pääohjelmasta riippumatta, ja ohjelmapäivitykset pienenevät
  • Optimointi yhdessä paikassa voi kiihdyttää koko järjestelmää
  • Voi piilottaa nopeasti muuttuvat järjestelmäkutsut
  • Matalan tason ongelmien tiivistäminen

haitta

  • Keskeisten kirjastojen ongelmat tekevät järjestelmistä käyttökelvottomia. Nykyaikaisissa jakeluissa asianmukaiset paketinhallintakoodit varmistavat kuitenkin yleensä, että näin ei voi tapahtua.
  • Binaariliitännän yhteensopimattomien muutosten yhteydessä kaikki riippuvat ohjelmat on käännettävä uudelleen. Versiot ja pakettien rinnakkainen käyttö vähentävät binäärisen yhteensopivuuden ongelmaa, mutta eivät ratkaise sitä.
  • Jos ohjelmointirajapinnassa tapahtuu yhteensopimattomia muutoksia , kaikki riippuvat ohjelmat on mukautettava vastaavasti.
  • Kannettavien tai jakelupalvelujen luominen vaikeutuu.

Kirjastot z / OS: ssä

In z / OS sekä edeltäjä Järjestelmä / 360 ja System / 390 , ohjelmakirjastoja (kuten kaikentyyppiset kirjastot) on / hoidettiin muodossa Partitioitu Tietojoukot (PDS). Jokaiselle ohjelmakoodityypille (katso alla) i. d. Yleensä käytetään omia kirjastoja ja niiden elementit nimetään jäseniksi tyypistä riippumatta . Jäsenet asetetaan sinne erilaisissa järjestelmäohjelmissa kehitysympäristössä ja niitä käytetään siellä.

Jokaiselle ohjelmakoodityypille käytetään yhtä (1) kirjastoa koko yritykselle, jokaiselle yritysjaolle tai tietyille käyttöalueille tarpeen mukaan. Merkinnät on erotettu jäsenen nimen mukaan. Esimerkiksi seuraavantyyppisiä ohjelmakirjastoja käytetään:

Koodi- / kirjastotyypit, esim. Esim. Z / OS (3GL-kielellä)
  • Lähdetekstikirjastot: Nämä sisältävät ohjelmien tai aliohjelmien lähdekoodin , ts. H. Ilmoitukset , toiminnot ja ohjelmointikielestä riippuen muut koodin osat. Lähdetekstien erityisversioita hallitaan usein erillisissä kirjastoissa; Esimerkkejä ovat:
    • Kopiokirjakirjastot ; ne sisältävät fragmentteja lähdekoodia, esimerkiksi tietojen ilmoitusten tiettyjentyyppisten tietojen joukko tai toimivan koodin osia käytettäväksi monissa ohjelmissa.
    • Esimerkiksi, makrokirjastoja sisältää ohjeet konekielellä, joka muuntaa makro puhelu tulee assembler-koodia kokoonpanon aikana ja aseta se lähdekoodia.
Lähdetekstikirjastojen merkinnät luodaan ja muokataan yleensä tekstieditorien avulla ja kääntäjät / kokoonpanijat käyttävät niitä syötteenä koottujen ohjelmakoodien luomiseksi.
  • Kääntäjiä asetettu esine moduulit on esine koodikirjastot , yleensä yksi moduuli kohti kokoelma. Nämä moduulit ovat tulo myöhempää vaadittavaa linkitystä tai sitomista varten; tämä kirjasto tunnetaan järjestelmäohjelman, joka tunnetaan myös nimellä Linkage Editor , nimellä SYSLIB.
  • Linkitettäessä luodaan ns. Load-moduulit , jotka tallennetaan muun muassa kuormakirjastoon . kutsutaan myös "Core Image Library". Lataa kirjastoja voi
    • koko yrityksessä vain yhdessä yhteisessä kirjastossa sisältävät kaikki ohjelmatyypit tai
    • valinnaisesti (ja yleensä)
    kutsuttavat pääohjelmat ( JCL: n kautta ) tai aliohjelmat ladataan yksitellen erikseen erillisten kirjastojen latauskomennon kautta .
Ja suorittamisen , eri kirjastoissa voidaan kautta määritetty STEPLIB, JOBLIB tai LINKLIST selityksessä ja yksittäiset moduulit ladataan niistä, jotka käyttöjärjestelmä .

Amiga OS: n kirjastot

Kanssa AmigaOS kaikki kirjastot käytetään jaettuja kirjastoja. Ohjelma pyytää niitä suorituksen aikana järjestelmältä, joka sitten antaa kirjaston perusosoitteen muistiin (asti OS3.9) tai vastaavan käyttöliittymän (OS4.0: sta). Sen jälkeen ohjelma käyttää suhteessa osoitteet saada todellista toimintoja (sen jälkeen, kun emäs osoite) kautta hyppy pöydän edessä pohjan osoite. Nämä toiminnot ovat palanneita (palanneita).

Vaikka kirjastoa muutettaisiin, hyppytaulukoiden olemassa olevat merkinnät ovat aina samat. Uusia merkintöjä voidaan lisätä vain taulukoiden loppuun. Siten annetaan yhteensopivuus alaspäin.

AmigaOS: n erikoisominaisuutena version vähimmäisnumero voidaan määrittää avaamalla kirjasto, mikä varmistaa, että halutut toiminnot ovat todella käytettävissä. Jos tätä versiota ei löydy, kutsuohjelma voi turvallisesti siirtyä takaisin yksinkertaisempaan toimintoon, kuten vanhemmassa kirjastoversiossa on.

Kirjastotiedostot ovat .library, ja ne sijaitsevat yleensä LIBS- hakemistossa : järjestelmäosio. Kun etsit kirjastoa, käyttöjärjestelmä tarkistaa myös pyytävän ohjelman ohjelmahakemiston.

nettilinkit

Wikisanakirja: ohjelmakirjasto  - selitykset merkityksille, sanan alkuperälle, synonyymeille, käännöksille

Yksittäiset todisteet

  1. B a b Rick Anderson: DLL-helvetin loppu . microsoft.com. 11. tammikuuta 2000. Arkistoitu alkuperäisestä 5. kesäkuuta 2001. Haettu 15. tammikuuta 2012: “ Yksityiset DLL-tiedostot ovat DLL-tiedostoja, jotka asennetaan tietyn sovelluksen mukana ja joita vain kyseinen sovellus käyttää. "
  2. Arnaud Desitter: Staattisten ja jaettujen kirjastojen käyttö eri alustoilla; Rivi 9: Kirjastopolku ( englanniksi ) ArnaudRecipes. 20. heinäkuuta 2011. Arkistoitu alkuperäisestä 20. heinäkuuta 2011. Haettu 26. tammikuuta 2012: “ win32 ajonaikaisen kirjaston polku:. ja sitten PATH "
  3. Ric Eric Brown: LSB 4.0 -sertifikaattien tarkoituksena on parantaa Linux-pirstoutumista ( englanniksi ) linuxfordevices.com. 8. joulukuuta 2010. Arkistoitu alkuperäisestä 24. joulukuuta 2013. Info: Arkistolinkki lisättiin automaattisesti, eikä sitä ole vielä tarkistettu. Tarkista alkuperäinen ja arkistolinkki ohjeiden mukaisesti ja poista tämä ilmoitus. Haettu 16. marraskuuta 2011: ” […] LSB auttaa vähentämään pirstoutumista, se ei poista sitä. "Pakkausten ja laajempien riippuvuuksien kysymys on ainakin minulle ainakin iso asia", kirjoittaa Kerner. "Sama RPM, jonka saan Fedoralle, ei toimi Ubuntulla, eikä Ubuntu DEB -paketit toimi SUSE: lla jne. Jne." [...] " @ 1@ 2Malline: Webachiv / IABot / archive.linuxgizmos.com
  4. Eskild Hustvedt: Pelaaminen hyvin distrojen ( englanniksi ) Linux Game Publishingin kanssa . 24. marraskuuta 2009. Arkistoitu alkuperäisestä 21. syyskuuta 2011. Haettu 15. tammikuuta 2012.
  5. a b Eskild Hustvedt: Uusi tapa tavata LGPL ( englanti ) 8. helmikuuta 2009. Arkistoitu alkuperäisestä 13. huhtikuuta 2014. Haettu 9. maaliskuuta 2011: " Voit sanoa erityisellä avainsanalla $ ORIGIN" suhteessa suoritettavan tiedoston todelliseen sijaintiin. Yhtäkkiä huomasimme voivamme käyttää -rpath $ ORIGIN / lib ja se toimi. Peli latasi oikeita kirjastoja, joten se oli vakaa ja kannettava, mutta myös nyt täysin LGPL: n ja kirjeen hengessä! "
  6. Evan Jones: Kannettavat Linux-binaarit ( englanniksi ) 13. helmikuuta 2008. Haettu 10. tammikuuta 2012: “ Linux ei ole hyvin tunnettu binaarisesta siirrettävyydestään. Kirjastot vaihtelevat järjestelmittäin, ja ytimen rajapinnoilla on taipumus muuttua. [...] Viime aikoina minun piti rakentaa binääri yhdelle järjestelmälle ja suorittaa se toiselle. Se käytti vain C-kirjaston vakiotoimintoja, joten odotin sen olevan helppoa. Se ei ollut. [...] "
  7. Christoph Baus: Vielä yksi Unix-painajainen: yhdistää staattisesti libstdc ++ ( englanti ) 31. toukokuuta 2005. Arkistoitu alkuperäisestä 10. helmikuuta 2010. Haettu 15. tammikuuta 2012.
  8. B a b Ulrich Drepper : Staattinen linkitys, jota pidetään haitallisena ( englanti ) redhat.com . Arkistoitu alkuperäisestä 27. toukokuuta 2010. Haettu 13. tammikuuta 2012: ” Siellä on edelleen liikaa ihmisiä, jotka ajattelevat (tai jopa vaativat), että staattisella linkittämisellä on etuja. Näin ei ole koskaan tapahtunut eikä tule olemaan. [...] "
  9. Mike Hearn: Satunnainen kokoelma nykyisiä Linux-ongelmia Binaarinen siirrettävyys ( englanniksi ) Autopackage .org. 2006. Arkistoitu alkuperäisestä 18. toukokuuta 2009. Haettu 23. tammikuuta 2012: “ Tämä sivu valmistettiin OSDL-kokousta varten joulukuussa 2005. Siinä kuvataan monia Linuxille ominaisia ​​ongelmia, joita olemme kohdanneet monimutkaisten ohjelmistojen jakelussa binaarimuodossa loppukäyttäjille. Se tarjoaa myös muutamia parannusehdotuksia. "
  10. Troy Hepfner: Linux Game Development Part 2 - Distributable Binaries ( English ) gamedev.net. 1. lokakuuta 2007. Arkistoitu alkuperäisestä 13. lokakuuta 2007. Haettu 19. joulukuuta 2011: ” Lähes kaikissa Linux-jakeluissa toimivan suoritettavan tiedoston luominen on haaste. On olemassa useita tekijöitä, jotka vaikuttavat ongelmaan [...] "
  11. Simon Peter: AppImageKit Documentation 1.0 ( englanti , PDF; 38 kB) PortableLinuxApps.org. Sivut 2-3. 2010. Arkistoitu alkuperäisestä 29. marraskuuta 2010. Info: Arkistolinkki lisättiin automaattisesti eikä sitä ole vielä tarkistettu. Tarkista alkuperäinen ja arkistolinkki ohjeiden mukaisesti ja poista tämä ilmoitus. Haettu 29. heinäkuuta 2011: " Sovelluksen siirtäminen koneesta toiseen ei ole helppoa " @ 1@ 2Malline: Webachiv / IABot / portablelinuxapps.org