Ero sivun ”Pkg-config” versioiden välillä
Siirry navigaatioon
Siirry hakuun
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= | | {{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. | |||
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ä. | |||
{{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>] | ||
g++ `pkg-config -- | 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]] | ||