gdb sagt "cannot open shared object file"
Ich habe eine Binär-und eine gemeinsame Bibliothek.
Die shared library kompiliert wird mit:
all:
g++ -g -shared -fpic $(SOURCES) -o libmisc.so
die binary kompiliert wird mit:
LIBS=-L../../misc/src
LDFLAGS=-lmisc
all:
g++ -g -o mainx $(INCLUDE) $(SOURCE) $(LIBS) $(LDFLAGS)
Ich ~/.bashrc
export LD_LIBRARY_PATH=/mnt/sda5/Programming/misc/src/
den libmisc.so
output-Pfad an.
Debuggen in der Konsole funktioniert:
gdb mainx
Jedoch von Emacs22, starten Sie gdb, schlägt mit der folgenden Meldung:
Starten des Programms: /mnt/sda5/Programmierung/main/src/mainx
/mnt/sda5/Programmierung/main/src/mainx: error while loading shared libraries: libmisc.also: nicht öffnen können shared object-Datei: Keine solche Datei oder das Verzeichnis
Sieht dies sehr schwierig für den moment, und ich konnte es nicht lösen. Ich bin nicht sicher, ob dies ein emacs-problem, oder sollte ich ein parameter übergeben werden, die in der gdb-Befehlszeile.
InformationsquelleAutor grayasm | 2009-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Emacs wahrscheinlich nicht Lesen .bashrc, bevor es startet gdb. Versuchen Sie, sich zu setzen 'set solib-search-path" und " set solib-absolute-path in Ihr .gdbinit Datei statt
InformationsquelleAutor yhager
Emacs nicht aufrufen gdb über bash, sondern ruft es direkt, und so .bashrc änderungen nicht wirksam und die
LD_LIBRARY_PATH
ist nicht festgelegt.Wenn Sie emacs beenden, öffnen Sie eine neue shell (also
LD_LIBRARY_PATH
gesetzt ist), starten Sie emacs, und dann tunM-X gdb
, dann würde es auch funktionieren.Einstellung
solib-search-path
im GDB ist ein hack.Eine viel bessere Lösung ist, erstellen Sie die ausführbare Datei in einer solchen Weise, dass es nicht noch
LD_LIBRARY_PATH
zu beginnen mit:Danke für die Antwort. Das klingt auch vernünftig.
InformationsquelleAutor Employed Russian
Andere Möglichkeit ist das erstellen eines
.gdbinit
- Datei in Ihrem$HOME
und setzen der LD_LIBRARY_PATH es:Dies ist praktisch, wenn Sie brauchen, um Debuggen mit, dass LD_LIBRARY_PATH Häufig (und nicht wollen, sich zu erinnern Laufenden emacs von Ihrer shell aus, jedes mal).
InformationsquelleAutor Paul