lib in ausführbare Datei "einbinden"



  • Hallo

    ich hab ein Programm geschrieben und verwende dabei eine Funktion aus eine Bibliothek (libboost_thread.so.1.42.0).
    Dafür inkludiere ich

    "boost/thread.hpp".
    

    Beim kompilieren verwende ich "-lboost_thread-mt -lpthread".
    Die Datei lässt sich auch wunderbar auf meinem Rechner ausführen. Verwende ich diese Datei auf einen baugleichen Rechner (+ gleiches Betriebssystem), bekomm ich die folgende Fehlermeldung:

    "error while loading shared libraries: libboost_thread.so.1.42.0: cannot open shared object file: No such file or directory"
    

    Auf diesem Rechner ist die Datei nicht vorhanden, da kein boost installiert ist. Soweit alles klar 🙂

    Ist es irgendwie möglich, die Bibliothek in die ausführbare Datei zu bekommen, ohne dass ich dort erst boost installieren muss?
    Danke und viele Grüße
    Martin



  • Warum lieferst du die libboost_thread.so nicht einfach mit?


  • Mod

    Link es static.



  • SeppJ schrieb:

    Link es static.

    Ich hab es mit -static probiert, die Datei wird dann auch deutlich größer, aber es besteht weiterhin der Fehler...



  • Verwendest du eine im Debug-Modus erstellte Datei? Wenn nein, dann versuch's im Release-Modus.



  • Rew. schrieb:

    Verwendest du eine im Debug-Modus erstellte Datei? Wenn nein, dann versuch's im Release-Modus.

    Ich verwende schon die "Release"-Version. Ohne -static ist die Datei 8 kb groß. Mit -static ist sie 1,5 mb groß.
    Beim linken verwendet eclipse folgenden Befehl:

    **** Build of configuration Release for project boost ****
    
    make all 
    Building target: boost
    Invoking: GCC C++ Linker
    g++ -L/usr/lib -static -o"boost"  ./src/boost.o   -lboost_thread-mt -lpthread
    Finished building target: boost
    

    Sieht für mich eigentlich richtig aus (was ich bisher so bei Tante google gefunden habe).



  • railrun schrieb:

    Rew. schrieb:

    Verwendest du eine im Debug-Modus erstellte Datei? Wenn nein, dann versuch's im Release-Modus.

    Ich verwende schon die "Release"-Version. Ohne -static ist die Datei 8 kb groß. Mit -static ist sie 1,5 mb groß.
    Beim linken verwendet eclipse folgenden Befehl:

    **** Build of configuration Release for project boost ****
    
    make all 
    Building target: boost
    Invoking: GCC C++ Linker
    g++ -L/usr/lib -static -o"boost"  ./src/boost.o   -lboost_thread-mt -lpthread
    Finished building target: boost
    

    Sieht für mich eigentlich richtig aus (was ich bisher so bei Tante google gefunden habe).

    Hat sich jetzt erledigt... Der nette Kollege am anderen Rechner hat immer die gleiche Datei verwendet... 😡 🙄 🤡 Sorry für stören und danke für die Hilfe 😋


Log in to reply