Was ist und wofür sind "pkg-config" und "sdl-config" gut?



  • Wozu sind diese beiden Programme in Kontext zu C++ unter Linux gut bzw. welche Vorteile dienen sie eigentlich?

    Könnt ihr mir bitte ein paar simple Beispiele liefern? Auf google finde ich nirgends gute (dt.) Anweisung/Erklärungen.


  • Mod

    Szenario: Du willst deine Software verteilen. Traditionelle Verteilungsmethode in Linux ist, den Sourcecode zu veröffentlichen und dann übersetzt sich der Anwender das Programm selber. Aber jetzt weiß der Anwender nicht genau, wie dein Programm zu übersetzen ist. Welche Libraries braucht es, mit welchen Parametern? Oder vielleicht ist er kein Experte was das Compilieren allgemein angeht. Also gibst du dem Code ein Script mit zur Übersetzung. Aber wenn du das Script schreibst, weißt du ja nicht, wie genau das System konfiguriert ist, auf dem die Übersetzung stattfinden wird. Wo liegen die Bibliotheken, die du brauchst? Welche Parameter braucht man dafür? Unixsysteme sind notorisch inkonsistent. Alle sind ein kleines bisschen verschieden, daher kannst du nicht einfach feste Pfade und Parameter in dein Script schreiben, wenn es überall funktionieren soll. Hier kommen die genannten Tools ins Spiel: Wenn eine Bibliothek installiert wird, kann sie sich bei pkg-config anmelden, und hinterlegen, wie sie in dieser Installation zu nutzen ist. Und dein Script kann pkg-config fragen, wie es die Bibliotheken zu nutzen hat, die es braucht. Und der Anwender braucht nur pkg-config installiert zu haben und dein Script ausführen.

    Letztlich ist das aber eine Schicht mit der weder du, noch der Anwender heutzutage häufig direkt zu tun haben, denn mittlerweile gibt es mindestens ein bis zwei weitere Abstraktionsschichten darüber. Das heißt, pkg-config wird normalerweise nicht von dir benutzt, sondern von dem Tool, das von dem anderen Tool benutzt wird, das du in deinem Installationsscript benutzt.

    sdl-config ist etwas ähnliches, aber spezieller für Programme, die auf SDL aufbauen.



  • Interessant und Vielen Dank nochmal.


Log in to reply