shared libraries usw. mit in die ausführbare Datei hineinbinden?



  • Guten Tag!
    Ich würde gerne wissen wie ich alles in eine ausführbare Datei linken und kompilieren kann. Ich meine damit alle benötigten shared libraries usw.
    Es muß doch irgendeinen Parameter geben der das bewirken kann beim kompilieren und linken. Oder etwa nicht?

    Denn wenn ich mein erstelltest Programm auf ein anderes Linuxsystem portieren möchte meckert das Programm beim ausführen und verlangt nach einigen shared libraries und das möchte ich eigentlich nicht. Es soll alles mit in die ausführbare Datei miteingebunden werden. Geht das?

    Gruß skontox



  • Du kannst Dein Programm auch statisch linken (Das ist das Suchstichwort für Dich! 😉 ) aber normalerweise sind dynamisch gelinkte Programme angenehmer, wenn jemand die passenden Libs nicht hat muss er diese eben nachinstallieren.



  • Besten Dank!

    Ich hab auch schon etwas gefunden. Den Schalter "-static" dann klappt das teilweise.

    Gruß skontox



  • Guten Tag!
    Leider packt er nicht alle Bibliotheken mit in meine ausführbare Datei, obwohl ich den Switch -static benutzt habe. Wie kann das sein?

    Gibt es noch eine andere Möglichkeit alles zusammen in eine Ausführbare Datei zuklatschen?

    Gruß skontox



  • Hm, hast Du die relevanten Stellen der Infoseite von gcc gelesen?



  • Ich hab mir nur --help angesehen und konnte nix in dieser Richtung lesen.
    Kann ich nicht auch irgendwie die ausführbare Datei veranlassen, dass sie die benötigten Libraries von einem anderen Verzeichnis automatisch lädt?
    Vielleicht ein Switch oder soetwas?
    Problem ist, dass ich ein Programm unter Suse Linux 8.2 erstellt habe und dieses jetzt auch gerne mal unter Knoppix 3.3 ausführen lassen wollte, aber unter Knoppix kann ich keine neuen Libraries hinzufügen, da alle Library-Verzeichnisse schreibgeschützt sind, da sie direkt von der CD geladen sind. Und die Datei /etc/ld.so.conf kann ich ebenfalls nicht modifiziern, da es auch schreibgeschützt ist und von der CD geladen wird.
    Richtig dumme Sache!
    Ich will doch nur mein Programm ohne Probleme ausführen! 😢

    Trotzdem erstmal besten Dank für Deine Bemühungen

    Gruß skontox



  • skontox schrieb:

    Leider packt er nicht alle Bibliotheken mit in meine ausführbare Datei, obwohl ich den Switch -static benutzt habe. Wie kann das sein?

    Eventuell hast Du von einigen Dateien nur die dynamisch gelinkte Variante (.so), und nicht die statisch gelinkte (.a)? In dem Fall kann auch -static nicht helfen.



  • Ah, ok, das was Du machen möchtest scheint ja sogar richtig Sinn zu haben! 🙂

    Lies die Infopage der gcc (Insbesondere "Invoking/ Linking" oder wie auch immer das genau heißen mag), die Ausgaben von --help sind meist nicht allzu aufschlussreich. (Bei GNU-Tools werden idR in erster Linie die Infoseiten gewartet; sogar Manpages sind nicht immer optimal.)

    info gcc
    


  • Du kannst aber (statt aendern der ld.so.conf) die Umgebungsvariable LD_LIBRARY_PATH auf den entsprechenden Pfad setzen.



  • An SG1: Das kann natürlich sein! Besten Dank für den Tipp!

    An nman: "Ah, ok, das was Du machen möchtest scheint ja sogar richtig Sinn zu haben! :)" <- natürlich zumindest macht das für mich Sinn! 😉

    An Gunnar: Das hab ich auch schon probiert, aber anscheinend klappt das auch nicht. Was mich auch gewundert hat, dass dort überhaupt nix standardmäßig drinne steht: -> $LD_LIBRARY_PATH.

    Tja Schade dann klappt das wohl nicht unter Knoppix, zumindest nicht von der CD-Version, aber das wäre gerade witzig gewesen!

    Trotzdem besten Dank Euch allen für Eure Antworten.

    Gruß skontox



  • An SG1: Das kann natürlich sein! Besten Dank für den Tipp!

    An nman: "Ah, ok, das was Du machen möchtest scheint ja sogar richtig Sinn zu haben! :)" <- natürlich zumindest macht das für mich Sinn! 🙂

    An Gunnar: Das hab ich auch schon probiert, aber anscheinend klappt das auch nicht. Was mich auch gewundert hat, dass dort überhaupt nix standardmäßig drinne steht: -> $LD_LIBRARY_PATH.

    Tja Schade dann klappt das wohl nicht unter Knoppix, zumindest nicht von der CD-Version, aber das wäre gerade witzig gewesen!

    Trotzdem besten Dank Euch allen für Eure Antworten.

    Gruß skontox


Anmelden zum Antworten