Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Bibliotheken unter Linux

  1. #1
    Gast

    Post Bibliotheken unter Linux

    Hallo zusammen,

    ich würde gerne wissen wie das unter Linux grundsätzlich mit den Bibliotheken gehandhabt wird? Ich meine für bestimmte Programme stellen die doch bestimmte Funktionen, globale Variablen und Klassen bereit, oder? Gibt es denn dann nicht irgendwo eine Liste aus der man ersieht welche Standartbibliotheken ein System braucht? Oder ist das alles so komplex, daß da keiner einen Überblick hat/haben kann?

    Frage übrigens so naiv, weil ich zum einen erst Anfänger im Bereich c++-Programmierung bin und zum anderen des öfteren bei Softwareinstallationen Fehlermeldungen bekam, daß das Paket nicht installiert werden könne weil dafür bestimmte Programme, oder eben bestimmte Bibliotheken fehlen würden.

    Kann mich darum jemand mal kurz umfassend aufklären oder mir sagen wo sowas steht - bei dem Schmöker von Soustroup bin ich erst so etwa auf Seite 70 und bis ich da durch bin wird es wohl noch ein Weilchen dauern

    Gruß und Danke

    Stefan

  2. #2
    Registrierter Benutzer
    Registriert seit
    Sep 1999
    Beiträge
    383

    Post

    Meiner Meinung nach ist es Aufgabe der Distributionshersteller, dafür zu sorgen, daß auf einem System die (am häufigsten) benötigten Bibliotheken installiert sind. Außerdem sollten Paketmanager wie rpm ein Paket nicht installieren, wenn die benötigten Libs nicht da sind.
    Oft hilft ein Blick in die README o.ä., um herauszufinden, welche Libs u.U. noch benötigt werden, um das Programm zur Mitarbeit zu bewegen.

    Zur Not gibt es natürlich noch ldd. Ein `ldd programmname` listet die Libs, gegen die das Programm gelinkt wurde. Hilft einem aber nur was, wenn der Bibliotheksname aussagekräftig ist.

    Gruß,
    Backi

  3. #3
    Registrierter Benutzer
    Registriert seit
    Nov 1999
    Ort
    MD
    Beiträge
    595

    Post

    hallo stefan.

    du hast schon recht. bibliotheken stellen (nicht nur unter linux) bestimmte funktionalitäten zur verfügung, welche von anderen progis genutzt werden können. so benutzen z.b. viele grafik-progis die libjpg.

    eine liste, aller häufig benutzten bibliotheken ist mir unbekannt. da kann ich aber backi recht geben. jede "vernünftige" distri sollte häufig benutzte lib's installieren bzw. auf dem install-medium haben. zu jedem progi selber steht normalerweise alles in der readme (soweit vorhanden).

    ------------------
    gruss
    ilja

  4. #4
    Gast

    Lightbulb

    Hallo Ihr Beiden

    und vielen Dank für die Infos - bin übrigens froh daß ich mal was verstanden habe (ich meine den Teil über den Sinn von Bibliotheken )!

    Wenn man übrigens die Bibliotheken eines installierten Programmpakets listen kann, ist dies dann auch für alle Programme möglich, oder macht das keinen Sinn, da es zu viele wären? Ich meine ich bekomme doch alle Libs von rpms über eine Query von z. B. xrpm raus und was ist dann mit dem Rest? Alles einzeln raussuchen?

    Gruß

    Stefan

  5. #5
    Registrierter Benutzer
    Registriert seit
    Sep 1999
    Beiträge
    383

    Post

    Hi Stefan!

    So wie ich Dich verstanden habe, hast Du öfters das Problem, das Paket xy Dich anmeckert, das die libirgendwas.so.1.0.0 nicht das ist.
    Das ist einer der größten Nachteile von RPM, da RPM nicht in der Lage ist, Dir zu erzählen, in welchem (nicht installierten) Paket sich diese Bibliothek befindet. Genau genommen kann RPM so etwas natürlich nicht wissen, es ist eher ein Fehler des Packers, der hätte das RPM von anderen Paketen abhängig machen müssen.
    RedHat liefert die rpmdb-.... Pakete, in denen ist eine RPM-Datenbank mit allen (auch nichtinstallierten) RedHat-Paketen enthalten, so daß man darüber erfahren kann, welches Paket man installieren muß.


    Sieh Dir mal die man-page von rpm an, der Abschnitt Query dürfte für Dich interessant sein. Um festzustellen, welche Bibliotheken installiert sind, kannst Du ja mal `rpm -qla | grep "\.so\."` eingeben, damit erwischst Du jedenfalls alle, die .so. im Namen haben...

    Gruß,
    Backi

  6. #6
    Gast

    Post

    Hallo Backi,

    danke für den Tip, aber ich werde aber eigenlich öfter von xy.tar.gz´s angemeckert daß da was nicht stimmt.

    Ich gehe da immer wie folgt vor:

    tar -tvfz xy.tar.gz

    -> hier läßt sich das Teil dann oft nicht gleich mitentpacken, was wohl an der Version des Zip´s liegt, also in diesem Fall zuerst

    gzip -d xy.tar.gz

    Nachdem ich mir angesehen habe wo das Teil sich "entplättern" will wähle ich ein Verzeichnis, daß ich für richtig halte, wenn ich mir unsicher bin immer /opt/ (sonst ist für zusätzliche Progrämmchen doch /usr/local/ vorgesehen oder?). Danach erfolgt dann das eigentliche Entpacken mit

    tar -xf ...

    Jetzt ins entsprechnende Verzeichnis wechseln und mal die README und die INSTALL ansehen, soweit vorhanden, danach

    ./configure

    dann

    make

    und

    make install
    (machmal optinal make)

    und dann sollte dat Dingens doch "ferdisch" installiert sein - leider kommen bei mir da oft Fehler und das Programm funktioniert nicht, bzw. ich bekomme bei make die Meldung daß nichts verändert wurde und folglich auch kein Linken und Neukompalieren notwenig ist (make liest doch
    lediglich das Makefile aus und compaliert dann die entsprechenden Pakete neu und linkt diese auch gleich, oder?)

    Joh, und dann noch ein "Wörtchen" zu den README bzw. INSTALL - Dateien. Da steht meist doch drin, daß man nur wenn man andere Pfade als die Standartpfade verwendet bestimmte Variablen setzen muß, nie aber was als Standartpfad gilt - ich meine /usr , die UnixSystemResources sind doch unendlich groß

    Stefan

  7. #7
    Registrierter Benutzer
    Registriert seit
    Sep 1999
    Beiträge
    383

    Post

    Also,....

    tar xvzf xy.tar.gz funktioniert bei mir eigentlich immer.

    Die anderen Schritte sind soweit richtig, aber:
    Entpacken kann man die Sourcen einfach im eigenen Home-Verzeichnis.
    Da kann man sie auch gleich kompilieren. Der Schritt make install (das muß root machen) kopiert dann die einzelnen Programmteile in die richtigen Verzeichnisse, stript sie und macht wasweißichwasderAutordanochvorgesehenhat.
    make ist ein ziemlich schlaues Programm, wenn man zweimal hintereinander make aufruft, merkt make, daß gar nichts zu tun ist. Wenn man nach erfolgreicher Kompilierung eine Quell-Datei ändert, wird nicht alles neu kompiliert, sondern nur die geänderte Datei; dann wird idR noch neu gelinkt. Wenn make also sagt, das nichts zu tun ist, dann ist das meistens so. Mit make clean kann man übrigens alle erzeugten binaries löschen, danach wird make alles neu kompilieren.

    Zum Pfad:
    Es gibt eine Reihe Kommandozeilenschalter für configure-Scripte, die allerdings nicht alle bei jedem Programm implementiert wurden. Bei jedem Programm, das ich bis jetzt gesehen habe, hat allerdings --prefix funktioniert.
    ./configure --prefix /usr weist configure an, die Makefiles so zu erstellen, daß make install die Programme unter /usr installiert, gewissermaßen denkt make dann, das /-Verzeichnis des Installationsziels ist.
    Nach dem make install kann man dann das Verzeichnis mit den Quellen löschen (wenn alles soweit funktioniert)!

    Hoffe, das hilft ein bischen weiter!

    Gruß,
    Backi

  8. #8
    Gast

    Post

    Danke,

    jetzt bin ich erst mal wunschlos glücklich!

    Stefan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •