Wie würden Sie die zur Verfügung stehenden Funktionen Liste usw. innerhalb einer kompilierten Bibliothek enthalten?

StackOverflow https://stackoverflow.com/questions/392142

  •  23-08-2019
  •  | 
  •  

Frage

Wie kann ich feststellen, ob eine Funktion in einer Bibliothek vorhanden ist, oder eine Liste der Funktionen in einer kompilierten Bibliothek?

War es hilfreich?

Lösung

Sie können über den nm Befehl, um die Symbole in der statischen zur Liste Bibliotheken.

nm -g -C <libMylib.a>

Andere Tipps

Für ELF-Binaries, können Sie readelf:

readelf -sW a.out | awk '$4 == "FUNC"' | c++filt

-s: Liste Symbole -W: nicht zu lange Namen schneiden

Der awk Befehl wird dann alle Funktionen herauszufiltern, und c ++ filt wird sie unmangle. Das bedeutet, dass es sie von einer internen Namensschema konvertiert, so dass sie in für Menschen lesbaren Form angezeigt werden. Es gibt Namen ähnlich wie diese (aus Boost.Filesystem lib genommen):

285: 0000bef0    91 FUNC    WEAK   DEFAULT   11 boost::exception::~exception()

Ohne c ++ filt wird der Name als _ZN5boost9exceptionD0Ev angezeigt

Für Microsoft-Tools "link /dump /symbols <filename>" gibt Ihnen die blutigen Details. Es gibt wahrscheinlich andere Möglichkeiten (oder Optionen) ein leichter macht zu lesen auflistet.

Unter Linux / Unix können Sie objdump -T verwenden, um die exportierten Symbole in einem bestimmten Objekt enthalten aufzulisten. Unter Windows gibt es dumpbin (IIRC dumpbin /exports). Beachten Sie, dass C ++ Funktionsnamen verstümmelt werden, um Überlastungen zu ermöglichen.

EDIT: nach codelogic der anwser ich das objdump erinnerte auch versteht -C de-Mangeln auszuführen.

Mit diesem Befehl:

objdump -t "your-Bibliothek"

Es wird mehr Druck als Sie wollen - nicht nur Funktionsnamen, sondern die gesamte Symboltabelle. Überprüfen Sie die verschiedenen Attribute der Symbole, die Sie erhalten, und Sie werden in der Lage, die Funktionen von Variablen und Sachen zu sortieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top