Libtool
| GNU Libtool (libtool) | |
|---|---|
| Kehittäjä(t) | GNU Project |
| Moottori | Järjestelmän linkkeri (ld) |
| Ensijulkaisu | 1990-luvun alku |
| Vakaa versio | 2.4.7 / 2023 |
| Ohjelmoitu | Shell-skripti |
| Käyttöliittymä | Komentorivi (CLI) |
| Tyyppi | Kirjastojen siirrettävyystyökalu |
| Lisenssi | GNU LGPL |
| Kotisivu | gnu.org/software/libtool/ |
Libtool (virallisesti GNU Libtool) on ohjelmointityökalu, jonka ensisijainen tehtävä on tehdä jaettujen kirjastojen (eli dynaamisten kirjastojen) luomisesta ja käytöstä siirrettävää (portable) eri käyttöjärjestelmien ja alustojen välillä. Se on olennainen osa GNU Build Systemiä (Autotools).
Eri käyttöjärjestelmät käsittelevät jaettuja kirjastoja (shared libraries) hyvin eri tavoin:
- Kirjastotiedostojen päätteet ja etuliitteet vaihtelevat (.so Linuxissa, .dylib macOS:ssä, .dll Windowsissa).
- Käytännöt kirjastojen versioimiseksi ja ABI-yhteensopivuuden merkitsemiseksi ovat alustakohtaisia.
- Tarvittavat kääntäjän ja linkkerin liput (esim. liput position-independent codea varten) vaihtelevat järjestelmittäin.
Libtool piilottaa tämän alustariippuvaisen monimutkaisuuden kehittäjältä luomalla geneerisiä skriptejä, jotka kutsuvat taustalla järjestelmäkohtaisia komentoja oikeilla valitsimilla.
Rooli GNU Build Systemissä
Libtool toimii tiiviissä yhteistyössä Automaken kanssa.
- Kehittäjä vain ilmoittaa Makefile.am-tiedostossa haluavansa luoda jaetun kirjaston.
- Autotools (Libtool mukaan lukien) huolehtii siitä, että kun loppukäyttäjä ajaa ./configure- ja make-komennot, järjestelmä luo jaetut kirjastot juuri sille alustalle sopivalla tavalla.
- Kehittäjä voi kirjoittaa yhdenmukaisen rakennusmäärityksen, joka toimii samalla tavalla riippumatta siitä, käännetäänkö se esimerkiksi vanhalla HP-UX-järjestelmällä vai modernilla Linux-jakelulla.
.la-tiedosto
Libtool luo kirjaston ohella tiedostoja, joiden pääte on .la (Lyhenne sanoista Libtool Archive). Nämä tekstitiedostot sisältävät metatietoja luodusta kirjastosta, kuten sen riippuvuudet ja sijainnin, auttaen muita Libtoolia käyttäviä projekteja löytämään ja linkittämään sen oikein.