pkg-config
| pkg-config | |
|---|---|
| Tekijä(t) | Havoc Pennington |
| Kehittäjä(t) | FreeDesktop.org-projekti |
| Vakaa versio | 0.29.2 / 20. maaliskuuta 2017 |
| Ohjelmoitu | C, vaatii GLibin. |
| Käyttöliittymä | Komentorivi (CLI) |
| Tyyppi | Käännösasetusten hallintatyökalu, Metatietojärjestelmä |
| Lisenssi | GPLv2+ |
| Kotisivu | pkgconfig.freedesktop.org |
| Lähdekoodi | gitlab.freedesktop.org/pkg-config/pkg-config |
Pkg-config on kehitystyökalu, jota käytetään ohjelmiston kääntämiseen. Sen päätehtävä on helpottaa ohjelmointikirjastojen käyttöönottoa tarjoamalla automaattisesti oikeat kääntäjä- ja linkkeriasetukset (--cflags ja --libs) rakennusjärjestelmille (kuten Make, Autotools, Meson jne.). Vaatii toimiakseen GLib-kirjaston.
Alkuperäinen projekti ylläpidetään freedesktop.org-sivustolla, mutta monissa nykyaikaisissa Linux- ja BSD-jakeluissa (esim. Arch, Fedora, uudemmat Debianit) on siirrytty käyttämään yhteensopivaa, mutta tehokkaampaa pkgconf-toteutusta, joka toimii samalla komentorivillä.
Toimintaperiaate
[muokkaa]Pkg-configin toiminta perustuu kirjastojen asentamiin metatietotiedostoihin, joilla on pääte .pc.
- Nämä tiedostot sijaitsevat ennalta määritellyissä hakemistoissa (esim. /usr/lib/pkgconfig).
- Jokainen .pc-tiedosto sisältää kirjaston nimen, kuvauksen, version, sekä kriittiset tiedot.
- Cflags: Liput esiprosessorille ja kääntäjälle (esim. header-tiedostojen polut, kuten -I).
- Libs: Liput linkkerille (esim. kirjastohakemistot ja linkattavat kirjastot, kuten -L ja -l).
- Requires: Riippuvuudet muihin .pc-tiedostoihin.
Komentorivillä pkg-config lukee halutun kirjaston .pc-tiedoston, selvittää sen riippuvuudet ja tulostaa kaikkien tarvittavien kirjastojen kääntö- ja linkitysliput, jotta ohjelma voidaan kääntää ja linkittää onnistuneesti.
Käyttö
[muokkaa]Tyypillinen käyttötarkoitus on saada kääntäjävalitsimet GCC:lle jonkin kirjaston käyttämistä varten:
pkg-config <toiminnot ja valitsimet> <kirjasto>[<versio>]
Esimerkki: Käännettäessä C++-lähdekooditiedostoa esimerkki.cc, joka käyttää glibmm-2.4-kirjastoa:
g++ `pkg-config --cflags --libs glibmm-2.4` esimerkki.cc
| Toiminto | Kuvaus |
|---|---|
| --cflags | Tulostaa kääntäjän liput (header-tiedostojen polut, -I). |
| --libs | Tulostaa linkkerin liput (linkitettävät kirjastot ja polut, -L, -l). |
| --modversion | Tulostaa pyydetyn kirjaston versionumeron. |
| --exists | Palauttaa nolla-arvon, jos kirjasto on löydetty. |
Vaihtoehdot ja nykytilanne
[muokkaa]Vaikka pkg-config on standardi, se on alkanut korvautua moderneissa järjestelmissä sen uudelleenkirjoitetulla versiolla:
- Pkgconf-vaihtoehto: Osa Linux- ja BSD-jakeluista (kuten Arch Linux, Fedora, Alpine) on siirtynyt käyttämään pkgconf-nimistä vaihtoehtoista toteutusta.
- Syyt muutokseen: Pkgconf ei tarvitse GLib-kirjastoa toimiakseen, on arkkitehtuuriltaan kevyempi ja tarjoaa paremman suorituskyvyn sekä kehittyneemmän riippuvuuksien ratkaisun.
- Yhteensopivuus: Käyttäjän kannalta komento on sama (pkg-config), mutta taustalla pyörii tehokkaampi pkgconf-ohjelma.