Wie kann man für eine statische Bibliothek (.a-Datei) die Abhängigkeiten auf Modulebene auflisten?Wie Abhängigkeiten von C/C++ statische Bibliothek auflisten?
Ich weiß für eine gemeinsam genutzte Bibliothek (.so), können wir objdump oder readelf, dies zu tun:
objdump -p test.so
oder
readelf -d test.so
ich so etwas wie
bekommenERFORDERLICH libOne.so
ERFORDERLICH libc.so.6
Aber für eine statische Bibliothek, kann ich die Abhängigkeiten in Symbolebene erhalten nur, zum Beispiel durch
objdump -T test.a
läuft Ich werde einige Sache bekommen wie:
00000000 DF UND 00000000 QByteArray :: mid (int, int) const
00000000 DF UND 00000000 QUrl :: fromEncoded (QByteArray const &)
00000000 DF UND 00000000 QFileInfo :: filename() const
Aber ich brauche die Informationen in Modulebene, weiß jemand, wie man diese Informationen bekommt?
Ich würde sagen, der Grund dafür ist, dass die statische Bibliothek nicht ** verknüpft ** ist. Daher war bisher niemand in der Baukette dafür verantwortlich, solche Informationen hinzuzufügen. –
@Jan Smrčina @Some Programmierer dude Aber wie kann eine statische Bibliothek generiert werden, ohne diese Informationen zu kennen? Zum Beispiel verwendet Bibliothek A eine Funktion, die in einer anderen Bibliothek B definiert ist. Wenn wir nicht etwas wie #include "B.h" hinzufügen, kann A erzeugt werden? Können wir in diesem Fall sagen, dass A von B abhängt? – bagebb
@bagebb Genau wie jede andere Objektdatei. Der Befehl 'ar', mit dem statische Bibliotheken erstellt werden, ist ein einfacher und sehr einfacher * ARchiver *. Bei statischen Bibliotheken liegt es an Ihnen, die Abhängigkeiten zu verfolgen und explizit mit ihnen zu verknüpfen. Es ist nichts, zu dem der Linker in der Lage ist, sondern lediglich die Objektdateien zu extrahieren und mit ihnen zu verknüpfen. –