Ero sivun ”Pkg-config” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
p Vaatii toimiakseen GLib-kirjaston
p Vaihtoehdot ja nykytilanne
Rivi 23: Rivi 23:


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ä.
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ä.
{{Huomautus|Haettavat hakemistot voidaan usein määritellä uudelleen käyttämällä ympäristömuuttujaa, tyypillisesti ''PKG_CONFIG_PATH''.}}


== Toimintaperiaate ==
== Toimintaperiaate ==
Rivi 57: Rivi 59:
|}
|}


{{Huomautus|Haettavat hakemistot voidaan usein määritellä uudelleen käyttämällä ympäristömuuttujaa, tyypillisesti ''PKG_CONFIG_PATH''.}}
== Vaihtoehdot ja nykytilanne ==
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.


[[Luokka:Kehitystyökalut]]
[[Luokka:Kehitystyökalut]]

Versio 14. marraskuuta 2025 kello 22.56


pkg-config
Vakaa versio 0.29.2  / 20. maaliskuuta 2017
Lisenssi GPLv2+
Kotisivu https://pkgconfig.freedesktop.org/wiki/ pkgconfig.freedesktop.org]

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ä.

Huomautus: Haettavat hakemistot voidaan usein määritellä uudelleen käyttämällä ympäristömuuttujaa, tyypillisesti PKG_CONFIG_PATH.


Toimintaperiaate

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ö

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

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.