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

Siirry navigaatioon Siirry hakuun
Pyscowicz (keskustelu | muokkaukset)
Ei muokkausyhteenvetoa
viimeiset fiksaukset
 
(5 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 1: Rivi 1:
{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}
{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}
{{ Ohjelma | nimi=pkg-config  | kuva= |  kuvateksti= | lisenssi=[[GPL]]| käyttöliittymä=teksti | kotisivu=[http://pkgconfig.freedesktop.org/wiki/ pkgconfig.freedesktop.org] }}
{{Ohjelma
| nimi           = pkg-config   
| logo          =
| kuva           =  
| kuvateksti    =
| tekijä        = Havoc Pennington
| kehittäjä      = FreeDesktop.org-projekti
| moottori      =
| ensijulkaisu  =
| vakaaversio    = 0.29.2
| vakaapvm      = 20. maaliskuuta 2017
| kehitysversio =  
| kehityspvm    =
| ohjelmoitu    = [[C]], vaatii [[GLib]]in.
| käyttöliittymä = Komentorivi (CLI)
| tyyppi        = Käännösasetusten hallintatyökalu, Metatietojärjestelmä
| lisenssi      = [[GPLv2+]]
| kotisivu       = [https://pkgconfig.freedesktop.org/wiki/ pkgconfig.freedesktop.org]
| lähdekoodi    = [https://gitlab.freedesktop.org/pkg-config/pkg-config 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.


'''pkg-config''' on työkalu kirjastojen vaatimien käännösasetusten löytämiseen, sitä tarvitaan myös tiettyjen optimointien toimintaan.
Alkuperäinen projekti ylläpidetään freedesktop.org-sivustolla, mutta monissa nykyaikaisissa Linux- ja BSD-jakeluissa (esim. [[Arch]], [[Fedora]], uudemmat [[Debian]]it) on siirrytty käyttämään yhteensopivaa, mutta tehokkaampaa [[pkgconf]]-toteutusta, joka toimii samalla komentorivillä.


==Käyttö==
{{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:
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>]
  pkg-config <toiminnot ja valitsimet> <kirjasto>[<versio>]
esimerkiksi, jos haluan kääntää glibmm-kirjastoa käyttävän [[C plus plus|C++]]-lähdekooditiedoston esimerkki.cc
 
  g++ `pkg-config --libs --cflags glibmm-2.4` esimerkki.cc
Esimerkki: Käännettäessä [[C plus plus|C++]]-lähdekooditiedostoa ''esimerkki.cc'', joka käyttää glibmm-2.4-kirjastoa:
 
  g++ `pkg-config --cflags --libs glibmm-2.4` esimerkki.cc
 
{| class="wikitable"
|+
|-
! 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.


[[Luokka:Kehitystyökalut]]
[[Luokka:Kehitystyökalut]]
Noudettu kohteesta ”https://www.linux.fi/wiki/Pkg-config