Datei für gemeinsames Objekt kann nicht geöffnet werden: Keine Datei oder Verzeichnis; Ausführen oder Debuggen in Eclipse

10

Unter Ubuntu habe ich eine C ++ App in Eclipse. Die Anwendung kompiliert und ich kann die App über die Befehlszeile ausführen.

Aber wenn ich versuche es zu debuggen oder es mit Eclipse auszuführen, ist der Fehler:

"Cannot open shared object file: No such file or directory" wird auf eine gemeinsam genutzte Bibliothek geworfen.

Ich habe LD_LIBRARY_PATH in meiner bashrc-Datei festgelegt und außerdem eine LD_LIBRARY_PATH-Umgebungsvariable sowohl in der Ausführungskonfiguration als auch in der Debugkonfiguration auf

gesetzt
  

/ home / behlingb / Dokumente / api_libs / FileGDB_API / lib

Was fehlt mir noch, um Eclipse dazu zu bringen, das auszuführen?



AKTUALISIEREN

Es gibt nur eine gemeinsame Objektdatei, die von dieser Anwendung benötigt wird, und diese Datei stammt von einem API-Download von Drittanbietern. Ich habe gerade festgestellt, dass wenn ich das geteilte Objekt innerhalb des Verzeichnisses, in dem sich die ausführbare Datei befindet, platziere, es in Eclipse debuggen wird. Gibt es eine Möglichkeit, ein anderes Verzeichnis anzugeben, sodass ich die Datei nicht für jedes Projekt kopieren muss?

    
user714157 21.01.2013, 22:26
quelle

5 Antworten

12

Ich benutze die Kepler-Version von Eclipse.

  1. In Eclipse klicken Sie auf Ausführen und Debug-Konfigurationen
  2. Klicken Sie auf die Registerkarte "Umgebung"
  3. Klicken Sie auf Neu
  4. Fügen Sie LD_LIBRARY_PATH hinzu und legen Sie den Wert auf das Verzeichnis fest, das die Bibliothek
  5. enthält
  6. starte Eclipse neu
monzie 14.11.2013 12:08
quelle
3

Wenn Sie LD_LIBRARY_PATH eingestellt haben und es nicht funktioniert. Schließen Sie Eclipes und führen Sie es über das Befehls-Terminal aus. Ich habe zufällig festgestellt, dass dies funktioniert. Nicht sicher über den Grund, aber wahrscheinlich etwas mit der Initialisierung von Eclipes zu tun haben.

    
Northern 06.03.2015 04:56
quelle
2

Sie können das strace Hilfsprogramm (und dann grep für open und / oder stat Aufrufe) verwenden, um eine Liste von .so Dateien zu erhalten, die für die Ausführung von etw benötigt werden, und dann locate (oder finden Sie unter den Paketen) ), um die tatsächliche Platzierung der erforderlichen lib herauszufinden

    
zaufi 21.01.2013 22:40
quelle
2

Nach dem, was @zuafi vorgeschlagen hat, müssen Sie nicht nach den Bibliotheken grepen und 'suchen', um sie zu finden.

Stattdessen speichern Sie Straces Ausgabe in eine Datei:

%Vor%

Öffnen Sie dann die Datei, wo Sie

sehen können %Vor%

Scrollen Sie diese Zeilen nach unten, bis Sie

drücken %Vor%

Dies bedeutet, dass vor dem Auffinden von /real/path/to/some/library.so mehrere Versuche stattgefunden haben, um library.so in verschiedenen Pfaden zu finden. Aber schließlich wurde die Bibliothek in /real/path/to/some/ gefunden.

Einfach kopieren und in Eclipse einfügen!

    
sali 10.04.2014 19:58
quelle
1

Dies ist gültig mit Eclipse Kepler (ich habe keine älteren Versionen betrachtet). Damit der Debugger Ihre gemeinsam genutzten Bibliotheken laden kann, schlägt der Versuch fehl, LD_LIBRARY_PATH festzulegen. Das CDT-Plugin bietet jedoch eine Shared Libraries Liste für diesen Zweck

  

Ausführen -Menü - & gt; Debug-Konfigurationen ...

dann im Konfigurationsdialog

  

C / C ++ - Anwendung - & gt; Ihr Projekt - & gt; Debugger -Registerkarte - & gt; Gemeinsame Bibliotheken -Registerkarte

    
zeFrenchy 29.11.2013 17:18
quelle

Tags und Links