[erledigt]Problem mit einer Library



  • Ich arbeite in c++ in Netbeans unter einem Testprojekt. Ich haber unter usr/local/lib eine .so Datei von einer library, die ich gerne mit dabei haben möchte. allerdings wenn ich die datei ohne kompletten pfad als linkerflag angebe, findet das programm diese libraries nicht beim starten, selbst dann nicht, wenn sie im selben ordner sind. Muss ich irgendwas beachten, wenn ich mit nicht statischen libraries arbeiten muss? Ich möchte deshalb nicht den kompletten pfad angeben, weil das doch ziemlich doof ist, denn ich weiß ja nicht wo auf anderen rechnern die library ist, und wenn ich die library einfach in den Projektordner packe, dann kann ich eigentlich auch gleich eine Statische library nehmen. Was könnte ich vergessen haben? Irgendwelche linkerflags? Systemvariablen falsch gelegt? Oder gar compilerflags?
    Danke für eure hilfe und auch wenn ihr mir nicht helfen könnt wünsch ich noch eine gute nacht.



  • also wenn sich die library im selben verzeichnis befindet hilft bei mir ein

    export LD_LIBRARY_PATH="./"
    

    blan



  • blan schrieb:

    also wenn sich die library im selben verzeichnis befindet hilft bei mir ein

    export LD_LIBRARY_PATH="./"
    

    blan

    kann ich mir denn auch irgendwie den library path anschauen?



  • Klar. Das ist ja eine Umgebungsvariable. In der Konsole zB einfach echo $LD_LIBRARY_PATH . Im Programm kannst du man: getenv(3) benutzen.



  • danke für die Hilfe, ich hab festgestellt, dass die Umgebungsvariable noch überhaupt nicht gesetzt war. Ich hab mir jetzt die Umgebungsvariable so angepasst, wie ich sie gerne haben soll, also die verschiedenen Pfade getrennt mit ':', aber ein Problem hab ich noch: Ich kann mein erstelltes Programm zwar nun in der Konsole ausführen, in der ich auch die Umgebungsvariable gesetzt habe, aber wenn ich das Programm aus Netbeans starte, dann findet der die immer noch nicht. Wie kann ich die Umgebungsvariable global setzten, dass ich sie nicht immer wieder neu setzten muss?



  • Krux schrieb:

    Ich kann mein erstelltes Programm zwar nun in der Konsole ausführen, in der ich auch die Umgebungsvariable gesetzt habe, aber wenn ich das Programm aus Netbeans starte, dann findet der die immer noch nicht. Wie kann ich die Umgebungsvariable global setzten, dass ich sie nicht immer wieder neu setzten muss?

    Du schreibst die exports in die Datei /etc/profile oder ~/.bash_profile. Dann werden die sofort beim Login gesetzt, d.h. diese Shell-Scripte werden beim Login gestartet und das was drin steht halt ausgeführt. Achte darauf, dass die Dateien ausführbar sind, sonst kann es zu fehlern kommen.

    Nachtrag: In Netbeans kannst du aber auch die Umgebungsvariablen setzen. Unter Project Properties -> Running -> Environment.



  • danke für die hilfe


Log in to reply