2012-08-27 3 views
6

Ich habe ein Projekt, an demWie debugge ich ein Programm, das in ein Libtool-Skript eingebunden ist?

  • gemeinsam genutzte Bibliotheken, dh: mylib.so
  • (Test) Programm über diese gemeinsam genutzten Bibliotheken, dh: test_mylib

Wenn ich versuche, gdb auf test_mylib zu laufen, er druckt:

"test_mylib": not in executable format: File format not recognized 

Wenn ich das echte Programm (.libs/test_mylib) direkt statt, es beschwert sich immer noch:

.libs/test_mylib: can't load library 'libhello.so.0' 

Wie kann ich gdb laufen mein Programm zu debuggen?

Antwort

9

Dieses Problem habe ich vor einigen Tagen erlebt und es gibt noch keine generische Antwort auf SO. Nur spezielle Fälle. Hier ist die Antwort, die ich auf dieser Seite gefunden habe: http://www.gnu.org/software/libtool/manual/html_node/Debugging-executables.html

Bis das Programm installiert ist, weiß das System nicht, wo nach den gemeinsamen Objekten gesucht werden soll. Sie liegen normalerweise in .libs Unterverzeichnis ihres Quellordners.

Libtool erzeugt einen Komfort Skriptdebuggen zu ermöglichen, bevor die eigentliche Installation durchgeführt wird (wer will fehlerhafte Software installieren vor, debuggen nach?)

Zum Glück, das generierte Skript für dieses einen Helfer bietet :

libtool --mode=execute gdb test_mylib 
+0

Auf einem OS X-Rechner bekomme ich 'error: libtool: unknown option Zeichen \ '-' in: --mode = execute' (meine Problemumgehung war die Installation auf ein Präfix, aber vielleicht --disable-shared wie erwähnt unten ist auf lange Sicht einfacher) – unhammer

3

Die Lösung durch die libtool docs empfohlen ist statisch zu verwenden während der Entwicklung verknüpfen, wie ich decribed: Build libtool application with static linking to local components

Verwenden Sie dazu die Option --disable-shared für das Skript ./configure.

Zum Beispiel:

./configure --enable-debug --disable-shared 

Nun ist die erzeugte ausführbare Datei ist eine direkt ausführbare Binärdatei, anstatt ein libtool Skript.

Dies hat den zusätzlichen Vorteil, dass die Bauzeit ungefähr halbiert wird.

+0

Andere Hintergrundinformationen ohne die '--disabled-shared' Lösung: https://autotools.io/libtool/wrappers.html und https://www.gnu.org/software/libtool /manual/html_node/Debugging-executables.html – nobar

Verwandte Themen