Mit Code::Blocks Bibliothek verlinken
-
Ich habe da ein kleines Problem bei der Bibliothek Einbindung (bzw. Verlinkung) mit Code::Blocks.
Ich weiß auch nicht warum das auf einmal wieder ein Problem ist.
Ich habe eine eigene lib geschrieben (*.so) und diese Datei will ich im menu "Project"/ "Build options..."/ "Linker settings" einbinden. Der Pfad stimmt eigentlich aber beim Starten der Anwendung heißt es immer:error while loading shared libraries: ../../../bin/Linux/SoftPixelEngine.so: cannot open shared object file: No such file or directory
Wisst ihr woran das liegen kann? Der Pfad müsste wie gesagt korrekt sein.
-
Also wenn die Anwendung im selben Verzeichnis erstellt wird wo auch die Code::Blocks Projekt Datei ist geht's. Aber ich will das folgender Maßen haben:
* MyLibrary.so ... [+] ProjectFolder | *-- CodeBlocksProject.cbp | *--[+] bin-Linux | | | *-- LinuxApplication <- findet "MyLibrary.so" nicht | *--[+] bin-Win32-gcc | ... | *--[+] bin-Win32-vc ...
Das Problem ist das WorkingDirectory. Aber solange ich mit Code::Blocks kompiliere, sollte das eigentlich kein Problem sein.
-
Der dynamische Linker (also das Teil, was beim starten ausgeführt wird und sich um die dynamischen Libraries kümmert. Nicht das Teil direkt nach dem Compiler :)) schaut nur in bestimmten Pfaden nach Bibliotheken. Standardmäßig ist das eben /usr/lib und /lib etc. Wenn du nun Bibliotheken in einem anderen Pfad hast, dann musst du den Pfad hinzufügen. Dafür gibt es mehrere Wege. Der kürzeste Weg ist einfach über die Umgebungsvariable LD_LIBRARY_PATH. Alternativ kannst du über man: ldconfig den Pfad richtig einrichten.
-
Also wäre es dann das vernünftigste die Lib einfach in /usr/lib zu kopieren?
-
Theoretisch sollte es auch reichen, bevor du Code::Blocks startest, entsprechend den LD_LIBRARY_PATH zu setzen...
so alla:
export LD_LIBRARY_PATH=/path/to/ur/library:${LD_LIBRARY_PATH} codeblocks &
Ist jetzt aber nicht getestet, musst halt mal testen.