Pfad zu Libraries wird scheinbar mit einkompiliert



  • Hallo!

    Ich habe hier ein Projekt, bei dem die Makefiles usw. mit cmake erstellt werden. Beim Kompilieren werden halt auch Libraries erzeugt und dynmisch an das Binary gebunden. Das funktioniert solange super, wie man die kompilierten Libraries + Executable nicht auf einen anderen Rechner kopiert. Dann sucht das Programm seine Libraries nämlich dort, wo sie auf dem Ursprungsrechner kompiliert wurden.

    Beispiel:

    Rechner A

    Sourcecode: /home/shinji/projekt/src
    Zielverzeichnis Bin: /home/shinji/projekt/bin
    Zielverzeichnis Lib: /home/shinji/projekt/libs

    Nach dem Kompilieren ergibt ein "ldd /home/shinji/projekt/bin/programm" als Pfad zu den Libraries:

    /home/shinji/projekt/libs/liba.so
    /home/shinji/projekt/libs/libb.so
    ...

    Wenn ich das ganze Verzeichnis "projekt" auf Rechner B nach "/home/stefan/" kopiere gibt dort ein "ldd /home/stefan/projekt/bin/programm" ebenfall aus:

    /home/shinji/projekt/libs/liba.so
    /home/shinji/projekt/libs/libb.so
    ...

    Die Libraries werden so natürlich nie gefunden. 😞
    Ich versuche gerade zu verstehen, wieso in das Programm scheinbar absolute Pfade zu den Libraries einkompiliert wurden. Und wie kann ich das verhindern? Gibt es da einen Parameter für die CMakeLists.txt?

    Vielen Dank
    Thorsten



  • Warum sollte der Pfad auch relativ bleiben?
    Entweder du passt den LDPATH an (also dein "libs"-Verzeichnis da eintragen)
    Oder du machst ein cmake -DCMAKE_INSTALL_PREFIX=mein_install_pfad beim neuen User.
    Oder halt gleich via rpm bzw. halt dem Paketmanager deiner Distri.


  • Mod

    Hast du vielleicht sowas wie LD_RUN_PATH während des Linkens gesetzt?


Anmelden zum Antworten