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?
Ich benutze die Kepler-Version von Eclipse.
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.
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
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!
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
Tags und Links eclipse c++ shared-libraries