2017-10-28 5 views
1

Gegeben Ar Bibliotheken und möglicherweise Objektdateien, was ist der beste Weg, um alle der ungelösten externen Symbole zu finden? Eine Möglichkeit besteht darin, den Linker auszuführen und dann die Fehler zu erfassen, aber manchmal stoppt er nach einer bestimmten Anzahl von Symbolen. Gibt es einen besseren Weg?Finden Sie fehlende Symbole in Mingw-Bibliothek

Antwort

0

In Ihrer mingw-w64bin-Verzeichnis der Installation zusammen mit die C- und C++ Compiler, Linker und Werkzeug machen, sollten Sie andere Programme, die die GNU binutils bilden.

Mehrere dieser (nm, objdump, readelf) die Symboltabellen von Objektdateien oder gemeinsam genutzten oder statischen Bibliotheken analysieren. Am einfachsten zu verwenden ist wahrscheinlich nm. Unter der Annahme, dass das bin Verzeichnis in Ihrem PATH ist, öffnen Sie eine Eingabeaufforderung in dem Verzeichnis, das die Bibliotheken enthalten oder Objektdateien Ihre Interesse an und laufen:

nm -u libfoo.a 

oder:

nm -u foo.obj 

zu listet die undefinierten Symbole in libfoo.a oder in foo.obj auf.

Wenn diese Dateien C++ Symbole enthalten, die Sie demangled anzeigen möchten, fügen Sie dann -C den nm Optionen.

Diese Werkzeuge alle erkennen, dass eine statische Bibliothek libfoo.a ist nur ein Archiv von Objektdateien so nm ... libfoo.a gibt Ihnen nur die gleichen Ergebnisse wie wenn libfoo.a mit einer Liste der Objekt Dateien in ihm ersetzt wurde.

Verwandte Themen